/**
* 有一组数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]
分享到:
相关推荐
1.6.3. 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数 位于数组的后半部分 ...........................................................130 1.6.4. 给定链表的头指针和一个...
本题要求实现一个JavaScript函数,该函数能够计算出在一定条件下,一个1到9位数字组合在所有可能的不重复组合中的大小排列序号。 具体来说,题目指出从数字1到9中选取N个数字,组成一个N位的不重复数。在这些不重复...
在组合数学中,重集是指允许重复选择元素的集合,而r组合则表示从n个元素中选择r个,这里的r和n可以是任意非负整数。 首先,我们要理解r组合的概念。在不考虑元素顺序的情况下,从n个不同元素中选取r个元素的方法...
需要分别计算被每个数整除的数,减去被任意两个数整除的数,然后加上被所有三个数整除的数,以确保没有遗漏或重复。 3. **程序实现**: - 容斥原理在编程中的应用通常涉及枚举子集。对于n个数,可以通过位运算高效...
4. **重复操作**:对得到的新数继续重复以上三个步骤。 通过这样的迭代操作,最终结果会收敛到一个固定的数值——6174,这个数值被称为“卡布列克常数”。 #### 二、卡布列克运算的具体实现 为了更好地理解卡布...
1. 任意组的可以重复的长度为三的顺子:这意味着我们可以将牌按照连续的数字顺序分组,例如1、2、3,或者3、3、3这样的组合。 2. 任意组的可以重复的三张完全相同的牌:即同一种类的牌可以形成一组,且数量不限。 3....
3. 将每个组合的和添加到一个结果列表中,确保该列表中不包含重复的和。 4. 输出结果列表的长度作为最终答案。 **参考代码分析:** ```python ls = [int(i) for i in input().split()] # 输入整数列表 results = []...
#### 程序1:生成三位无重复数字组合 - **知识点**: - 字符串操作:利用字符串处理生成不同的三位数组合。 - 循环结构:使用for循环遍历1到4的数字。 - 列表操作:使用列表存储生成的三位数。 - **实现思路**: ...
- 描述:从键盘输入三个浮点变量`a`、`b`和`c`,用公式法求解`ax² + bx + c = 0`,并将结果输出到屏幕上。 - 关键知识点: - 输入输出操作:使用`scanf`接收系数,使用`printf`输出解。 - 条件判断:根据判别式...
1. 对于数列 A 中的任意元素 x,如果 x+T 不大于 an,则 x+T 也是数列 A 中的元素。 2. 对于数列 A 中的任意元素 x,如果 x-T 不小于 a1,则 x-T 也是数列 A 中的元素。 3. 所有小于 T 的正整数都不是 A 的周期。 ...
55. 字符流中第一个不重复的字符:通过构建字符计数器,可以快速找出字符流中的第一个只出现一次的字符。 56. 链表中环的入口节点:通过快慢指针可以找到链表中环的入口节点。 57. 删除链表中重复的节点:需要遍历...
设定三个变量表示公鸡、母鸡和鸡仔的数量,然后通过遍历所有可能的组合,找到满足条件的解。需要注意边界条件和优化搜索空间。 2. **打印100以内的所有素数**: 可以使用埃拉托斯特尼筛法,从2开始,将2的倍数标记...
每个数字代表的是组合数,即从n个不同元素中不重复地选取k个元素的方法数。这在组合数学中有着重要地位,如二项式定理就是基于杨辉三角展开的。 MATLAB中生成杨辉三角的常见方法是使用循环结构,如for循环,结合...
**问题描述**:给定一个整数数组,找到其中连续子数组的最大和。 **解题思路**: - 使用动态规划的方法解决。 - 维护一个当前最大值变量和全局最大值变量。 - 遍历数组,更新这两个变量。 ### 4. 分解质因数 **...
第五题中,对于任意一组输入值,有效输出个数为1,选项C正确。 6. **加法器的结构**: 74LS283是一款四位二进制加法器,它有9个输入(包括进位输入)和5个输出(包括进位输出)。第六题答案是C,9入5出。 7. **...
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. **逻辑运算**:在...
2. **最小项与函数关系**:给定函数Y = (A, B,C) = ∑m(1,3,4,5),表示Y为A、B、C三个变量的最小项之和,当A、B、C取值使得对应的最小项为1时,Y才为1。题目中问的是使Y = 0的输入变量最小项,即非Y的最小项,共有4...
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转换为十进制...
递归的思路是基于组合数的性质,C(n, m) = C(n-1, m-1) + C(n-1, m),其中C(n, m)表示从n个不同元素中取出m个元素的组合数。 #### 题目2:自守数查找 **题目描述:** 如果一个自然数的平方数的尾部仍然为该自然数...