有a,b,c,d,e
5个中任选2的排列,如:ab,ac,ad,ae,bc,bd,be,cd,ce,de ab与ba算一个。
5个中选任意个(包含0个),如:,a,b,c,d,e,ab,abc,abcde,abcd,cbed..... abc与bca与cab算一个
5选5:abcde,acebd......
5个中任选2的排列,如:ab,ac,ad,ae,bc,bd,be,cd,ce,de ab与ba算一个。
5个中选任意个(包含0个),如:,a,b,c,d,e,ab,abc,abcde,abcd,cbed..... abc与bca与cab算一个
5选5:abcde,acebd......
解决方案 »
- 请教一个java多线程的问题,想在一个线程中执行多个 Runnable 接口实例的run方法。
- 如何把中文转换为Asic码?
- java 添加Choice内容问题
- bufferedReader 读取服务器传来的数据时候 老是读重复 数据,为什么
- ArrayList和Vector,用哪个好,还是用别的
- [Microsoft][SQLServer 2000 Driver for JDBC]The hexadecimal string is invalid.
- 请大家帮我找找!是这样的。。。。。
- 如何得到一个数据库查询结果集ResultSet对象包含的记录数?
- 联系Scjp战友!
- 初学者应该怎么样学java
- 问一个<<JAVA核心基础>>中关于类型转换的问题
- 怎么使用j2se帮助帮档
太多的话,再想想,关注一下...
比如5选3的话,做3层循环,我没用递归,这样结构看得更清楚些。
伪代码:int r[3];
for(int i='a';i<='c';i++)
{
r[0] = i;
for(int j = i+1;j <= 'd';i++)
{
r[1] = j;
for(int k = j+1;k <= 'e';k++)
{
r[2] = k;
输出r或返回r值;
}
}
}
可以不重复的找出所有结果
当然用递归效率最高。自己写吧。
这样也麻烦,它是5选任意组合,你的做法也麻烦
对于只有5个数,可以写成2维数组:
char [5][5] M1 = {a,b,c,d,e,0}.... (5个都一样)//数组不能制定大小,我这里指定是为了看得更明白
List [] lt1;//放需要的组合
List [] lt2;//放组合相加的结果
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
5层循坏可以选出全部的数,把它放到List1里面,它的形式应该是M1[i]M1[j]M1[?]M1[?]M1[?],然后把里面的0去掉,同时让他们相加,用结果于之前相加的结果进行比较(具体它的每一次相加结果,你也应该把它放到另一个List2里面),一样就不add到List1里面,到最后,你的List1里面就应该是你要的了。5选任意没有重复的。具体实现过程应该很简单了。自己写吧。我只想到这样,其他的想不出来了!!唉
算法有BUG,a+d = b+c,但是它们是不同的。
这样,你取出时
利用arrays.sort(数组),把它排序一下也就是在
char ch[] = new char[](M1[i]M1[j]M1[?]M1[?]M1[?]);
arrays.sort(ch);//把ch排序,再去掉里面的0元素,在toString,再把它ADD到List里面,取下一个数时,只要与List里面的数比较一下,
for(int z=0;z<list.size();z++)
{
if( str.equals(list.get(i)))
add;
else
continue;
}