`
victordpg
  • 浏览: 16461 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

输出1,2,...,n这组数中任意三个数的不重复组合

    博客分类:
  • Java
 
阅读更多
	/**
	 * 有一组数1,2,3,4,5输出不重复的由其中三个数组成的组合。
	 * [123, 124, 125, 134, 135, 145, 234, 235, 245, 345]
	 */
    public static void main(String[] args) {
    	List<String> list = new ArrayList<String>();//[1, 2, 3, 4, 5]
    	for(int i=0;i<5;i++){
    		list.add(new Integer(i+1).toString());
    	}

    	List<String> tmp1,tmp2,a;
    	List<List<String>> flag = new ArrayList<List<String>>();
    	
    	List<String> result = new ArrayList<String>();
    	String str1,str2,str3;
    	
    	for(int j=0;j<list.size();j++){
    		//获取第一个数
    		str1 = list.get(j);
    		tmp1 = new ArrayList<String>(list);
    		//tmp1 = list;如果直接针对tmp1进行赋值将会影响到list的值,故需要使用带参数的构造方法赋值。
    		tmp1.remove(j);
    		
    		for (int m = 0; m < tmp1.size(); m++) {
    			//获取第二个数
    			str2=tmp1.get(m);
    			tmp2 = new ArrayList<String>(tmp1);
    			tmp2.remove(m);
    			
    			for(int n=0; n<tmp2.size();n++){
    				//获取第三个参数
    				str3=tmp2.get(n);
    				a = new ArrayList<String>();
    				a.add(str1);
    				a.add(str2);
    				a.add(str3);
    				Collections.sort(a);
    				//过滤重复纪录
    				if(!flag.contains(a)){
    					result.add(str1+str2+str3);
        				flag.add(a);
    				}
    			}
			}
    	}
    	
    	System.out.println(result);
    }
 
这是一个典型的组合问题,根据组合公式:C(n,m)=n!/(n-m)!m!,可以得出从5个数中取出3个不重复的数有10组不重复组合。

结果:[123, 124, 125, 134, 135, 145, 234, 235, 245, 345]

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    世界500强面试题.pdf

    1.6.3. 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数 位于数组的后半部分 ...........................................................130 1.6.4. 给定链表的头指针和一个...

    javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号

    本题要求实现一个JavaScript函数,该函数能够计算出在一定条件下,一个1到9位数字组合在所有可能的不重复组合中的大小排列序号。 具体来说,题目指出从数字1到9中选取N个数字,组成一个N位的不重复数。在这些不重复...

    C#界面实现重集的r组合求解

    在组合数学中,重集是指允许重复选择元素的集合,而r组合则表示从n个元素中选择r个,这里的r和n可以是任意非负整数。 首先,我们要理解r组合的概念。在不考虑元素顺序的情况下,从n个不同元素中选取r个元素的方法...

    组合数学补充内容.pptx

    需要分别计算被每个数整除的数,减去被任意两个数整除的数,然后加上被所有三个数整除的数,以确保没有遗漏或重复。 3. **程序实现**: - 容斥原理在编程中的应用通常涉及枚举子集。对于n个数,可以通过位运算高效...

    验证卡布列克运算(带详细的运算分析资料)

    4. **重复操作**:对得到的新数继续重复以上三个步骤。 通过这样的迭代操作,最终结果会收敛到一个固定的数值——6174,这个数值被称为“卡布列克常数”。 #### 二、卡布列克运算的具体实现 为了更好地理解卡布...

    2-1麻将-B1

    1. 任意组的可以重复的长度为三的顺子:这意味着我们可以将牌按照连续的数字顺序分组,例如1、2、3,或者3、3、3这样的组合。 2. 任意组的可以重复的三张完全相同的牌:即同一种类的牌可以形成一组,且数量不限。 3....

    2023NOC软件创意编程赛项真题-python初中复赛

    3. 将每个组合的和添加到一个结果列表中,确保该列表中不包含重复的和。 4. 输出结果列表的长度作为最终答案。 **参考代码分析:** ```python ls = [int(i) for i in input().split()] # 输入整数列表 results = []...

    Python练习集100题.pdf

    #### 程序1:生成三位无重复数字组合 - **知识点**: - 字符串操作:利用字符串处理生成不同的三位数组合。 - 循环结构:使用for循环遍历1到4的数字。 - 列表操作:使用列表存储生成的三位数。 - **实现思路**: ...

    2014c语言必做题

    - 描述:从键盘输入三个浮点变量`a`、`b`和`c`,用公式法求解`ax² + bx + c = 0`,并将结果输出到屏幕上。 - 关键知识点: - 输入输出操作:使用`scanf`接收系数,使用`printf`输出解。 - 条件判断:根据判别式...

    今日头条2018校园招聘笔试3.doc

    1. 对于数列 A 中的任意元素 x,如果 x+T 不大于 an,则 x+T 也是数列 A 中的元素。 2. 对于数列 A 中的任意元素 x,如果 x-T 不小于 a1,则 x-T 也是数列 A 中的元素。 3. 所有小于 T 的正整数都不是 A 的周期。 ...

    《剑指Offer》题目及代码.pdf

    55. 字符流中第一个不重复的字符:通过构建字符计数器,可以快速找出字符流中的第一个只出现一次的字符。 56. 链表中环的入口节点:通过快慢指针可以找到链表中环的入口节点。 57. 删除链表中重复的节点:需要遍历...

    JAVA算法训练题目.pdf

    设定三个变量表示公鸡、母鸡和鸡仔的数量,然后通过遍历所有可能的组合,找到满足条件的解。需要注意边界条件和优化搜索空间。 2. **打印100以内的所有素数**: 可以使用埃拉托斯特尼筛法,从2开始,将2的倍数标记...

    yanghui.rar_matlab杨辉三角_杨辉三角

    每个数字代表的是组合数,即从n个不同元素中不重复地选取k个元素的方法数。这在组合数学中有着重要地位,如二项式定理就是基于杨辉三角展开的。 MATLAB中生成杨辉三角的常见方法是使用循环结构,如for循环,结合...

    26道基础算法题.pdf

    **问题描述**:给定一个整数数组,找到其中连续子数组的最大和。 **解题思路**: - 使用动态规划的方法解决。 - 维护一个当前最大值变量和全局最大值变量。 - 遍历数组,更新这两个变量。 ### 4. 分解质因数 **...

    昆工数电09考试题

    第五题中,对于任意一组输入值,有效输出个数为1,选项C正确。 6. **加法器的结构**: 74LS283是一款四位二进制加法器,它有9个输入(包括进位输入)和5个输出(包括进位输出)。第六题答案是C,9入5出。 7. **...

    第一届大湾区青少年信息学编程竞赛U15组初赛-题目.docx

    8. **二进制与十进制转换**:二进制数1011.01转换为十进制,整数部分是1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 8 + 0 + 2 + 1 = 11,小数部分是0.01*2^(-1) + 1*2^(-2) = 0.25,所以总值是11.25。 9. **逻辑运算**:在...

    第14周周数电习题课 (2).pdf

    2. **最小项与函数关系**:给定函数Y = (A, B,C) = ∑m(1,3,4,5),表示Y为A、B、C三个变量的最小项之和,当A、B、C取值使得对应的最小项为1时,Y才为1。题目中问的是使Y = 0的输入变量最小项,即非Y的最小项,共有4...

    2021-2022计算机二级等级考试试题及答案No.12935.docx

    1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 64 + 32 + 16 + 0 + 4 + 2 + 1 = 119 对于小数部分: 1 * 2^-1 + 1 * 2^-2 = 0.5 + 0.25 = 0.75 所以,二进制数1110111.11转换为十进制...

    蓝桥杯2011决赛试题

    递归的思路是基于组合数的性质,C(n, m) = C(n-1, m-1) + C(n-1, m),其中C(n, m)表示从n个不同元素中取出m个元素的组合数。 #### 题目2:自守数查找 **题目描述:** 如果一个自然数的平方数的尾部仍然为该自然数...

Global site tag (gtag.js) - Google Analytics