面试的人员最后给了我一个题目,我当时傻眼了。他当时问我数学怎么样,我说,“我数学还可以!”。然后他说,要给我一个数学编程的题目做。我说:“会不会很难啊!”。他微笑的说:"很简单!"
题目是这样出的:5个香蕉,4个梨子,3个苹果。如何用程序实现,将这个些水果排列成不同的组合,并用某种语言来实现!
我找的一些资料:
数学中的组合运算在统计中是十分常见的运算,但用程序输出所有组合的可能性却并不容易。这里介绍一个非常酷的组合算法:(太TM牛逼了)
组合问题:输出从m个数中的任意抽取n个数的组合全部可能序列。
[10反转置换法]
算法思想:
(1) 初始化一个m个元素的数组(全部由0,1组成),将前n个初始化为1,后面的为0。这时候就可以输出第一个组合序列了。
(2) 从前往后找,找到第一个10组合,将其反转成01,然后将这个10组合前面的所有1,全部往左边推 ,即保证其前面的1都在最左边。这时又可以输出一组组合序列了。
(3) 重复第(2)步,知道找不到10组合位置。这时已经输出了全部的可能序列了。 为什么?你想,(以m=5,n=3为例)一开始是11100,最后就是00111,已经没有10组合了 。
-
-
public void combination(int m,int n)
- {
-
char[] totalArray=new char[m];
-
-
int totalSortNum=0;
-
-
-
for(int i=0;i<m;i++){
-
if(i<n)
-
totalArray[i]='1';
-
else
-
totalArray[i]='0';
- }
-
totalSortNum+=1;
-
System.out.println(totalSortNum+"\t"+Arrays.toString(totalArray));
-
-
-
int index=-1;
-
while((index=String.valueOf(totalArray).indexOf("10"))!=-1){
-
-
totalArray[index]='0';
-
totalArray[index+1]='1';
-
-
int count=0;
-
for(int i=0;i<index;i++){
-
if(totalArray[i]=='1')
- count++;
- }
-
for(int j=0;j<index;j++){
-
if(j<count)
-
totalArray[j]='1';
-
else totalArray[j]='0';
- }
-
- totalSortNum++;
-
System.out.println(totalSortNum+"\t"+Arrays.toString(totalArray));
- }
- }
分享到:
相关推荐
标题 "一道C#面试题目" 暗示我们即将探讨的是与C#编程语言相关的面试问题,这可能涉及语言的基础概念、高级特性、面向对象编程、.NET框架、多线程、异常处理、内存管理等多个方面。在C#的面试中,面试官通常会考察...
虽然“www.pudn.com.txt”看起来不像是一道具体的面试题目,但它可能包含了华为公司或者IT行业的最新动态、技术文章或者对华为公司历史、文化、业务的介绍。面试前了解这些信息,能体现你对行业的热情和对公司文化...
C语言面试题目总结 根据提供的文件信息,总结了以下几个C语言面试题目,涵盖了多态、函数注册、字符串处理、算法设计等方面的知识点。 1. 多态类中的虚函数表是 Compile-Time,还是 Run-Time 时建立的? 答案:...
在面试场景中,深入理解`new`的多种用法不仅是对候选人基本技能的考察,也是对其高级编程技巧和设计模式熟悉度的测试。下面将详细解析`new`在C#中的各种应用场景。 ### 创建对象 `new`最基础的用法是在实例化类或...
【C++面试题目总结】 1. **编程题:字符串匹配** - 题目要求判断两个字符串a和b是否匹配,匹配条件是b中的汉字出现次数不少于a中的出现次数,并且b中的所有字符都在a中出现。这是一道典型的字符串处理问题,可以...
新浪潮集团作为一家知名的IT企业,其面试题目通常会涵盖逻辑思维、数学推理、问题解决等多方面的能力考察。以下是对这些题目所涉及知识点的详细解释: 1) 考古学家判断金币为假币的原因可能是因为公元前3世纪尚未...
1. 教育理念:面试题目中提到了高中语文教学的四个核心目标:全面提高学生的语文素养、正确把握语文教育的特点、积极倡导自主、合作、探究的学习方式以及努力建设开放而有活力的语文课程。这表明在语文教育中,不仅...
描述中强调了在面试前需要多看书、查看面试题目,这暗示了面试准备的重要性。 - **基础知识**:熟悉编程语言的基础知识,如C语言中的变量、循环、函数等。 - **技术广度**:具备对各种技术栈的基本了解,如数据结构...
"中国移动面试题目"。 本资源摘要信息中,涵盖了中国移动面试题目的相关知识点,包括中国移动的三大品牌、六大运营商、文学作品、数学运算、逻辑思维、语言能力和个人评价等方面。 一、中国移动的三大品牌 中国...
请完成以下题目。注意,请勿直接调用 ANSI C 函数库中的函数实现。 a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。 第一种unsigned int TestAsOne0(char ...
根据给定的信息,我们可以推断出这是一道与算法相关的面试题目。虽然提供的部分内容看起来较为混乱,但结合标题、描述及标签,我们可以尝试解析并构建一个相对完整的算法问题。 ### 题目背景 一家知名公司在招聘...
香港的小一面试题目汇总,为我们提供了一个全面了解孩子在这些方面表现的窗口。 首先,面试从孩子的自我介绍开始,这一步骤看似简单,实则考验着孩子的表达能力和聆听理解能力。面试官会询问孩子的姓名、年龄、住址...
根据提供的信息,我们可以详细解析这些SQL面试题目以及给出的示例答案,并且深入理解每一道题目背后的原理与应用场景。 ### 風险1: 查询身份证号码为440401430103082的申请日期 #### 问题描述 此题目要求查询在`g_...
### 常见Oracle数据库面试题目解析 #### 1. 列出至少有一个员工的所有部门 此题旨在考察考生如何筛选出至少有一名员工所在的部门。解决方案是通过使用`GROUP BY`结合`HAVING`子句来实现。具体步骤如下: - 使用`...
本题是一道经典的智力题目,常出现在求职面试的情境之中,特别是那些注重逻辑思维和技术能力的职位。题目通过一个虚构的故事背景——五个海盗如何公平地分配100枚金币——来考验应聘者的逻辑推理能力和决策制定能力...
《MySQL面试题目总结》 MySQL是世界上最流行的开源关系型数据库管理系统之一,对于面试者来说,掌握其核心概念和技术是至关重要的。以下是对MySQL面试题目的深入解析: 1. **MySQL优化** - 数据库优化是提升系统...
### 软件测试工程师面试题目解析 #### 题目一:自我介绍 - **问题解析**:在软件测试领域,自我介绍不仅是对个人基本信息的陈述,更是展示自己技术背景、项目经验和职业规划的机会。面试官通过这个问题来了解应聘者...
Java后端面试是技术人才求职过程中的一道重要关卡,涉及到的知识点广泛而深入,涵盖了基础语法、数据结构、算法、并发编程、JVM优化、框架应用等多个领域。以下是一些可能在Java后端面试中出现的重点知识: 1. **...