黑马程序员技术交流社区
标题:
如何实现1,2,3,4,5,6这几个数字的任意组合
[打印本页]
作者:
崔洪全
时间:
2012-11-18 08:48
标题:
如何实现1,2,3,4,5,6这几个数字的任意组合
本帖最后由 崔洪全 于 2012-12-6 08:41 编辑
今天又空,就把之前遇到的问题,都写出来了。将六个数字或字符的所有组合都求出来,并打印。
我想了很久,用for循环试了试,结果有点乱。请求帮助,谢谢。
作者:
王中利
时间:
2012-11-18 10:40
01.public class Rank {
02. public static void main(String[] args) {
03. int[] array = { 7, 9, 5, 8 };
04. boolean[] isSelected = new boolean[array.length];
05. int[] array2 = new int[array.length];
06. for (int i = 0; i < isSelected.length; i++) {
07. isSelected[i] = false;
08. }
09. rankArray(array, isSelected, array2, 0);
10. }
11.
12. public static void rankArray(int[] array, boolean[] isSelected,
13. int[] array2, int length) {
14.
15. if (array.length == length) {
16. for (int i : array2) {
17. System.out.print(i + ",");
18. }
19. System.out.println();
20. return;
21. }
22. for (int i = 0; i < isSelected.length; i++) {
23. if (isSelected[i]) {
24. continue;
25. }
26. isSelected[i] = true;
27. array2[length] = array[i];
28. rankArray(array, isSelected, array2, length + 1);
29. isSelected[i] = false;
30. }
31. }
32.}
你试一下!
作者:
崔洪全
时间:
2012-11-24 15:09
额。。。利哥,我只能说,我的问题没有说明白,您些的答案是输出多有的排列组合,我要的是求出所有的组合,例如
1,12,23,24,124....所有组合方式,无视排列顺序。
当然您写出的这个答案,我也很想了解,但是我没有读懂此程序,如果可以的话,希望您能给我加点注释。万分感谢。
作者:
ljhheima
时间:
2012-11-24 20:46
public class Test1
{
public static void main(String[] args)
{
for(int a=1;a<=6;a++)
{
System.out.println(a);
for(int b=a+1;b<=6;b++)
{
System.out.print(a);
System.out.print(b);
System.out.println();
for(int c=b+1;c<=6;c++)
{
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.println();
for(int d=c+1;d<=6;d++)
{
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.print(d);
System.out.println();
for(int e=d+1;d<=6;d++)
{
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.print(d);
System.out.print(e);
System.out.println();
}
}
}
}
}
System.out.print("123456");
}
}
作者:
ljhheima
时间:
2012-11-24 20:46
这就是你要的答案。
作者:
崔洪全
时间:
2012-11-26 11:59
谢谢了,非常感谢
作者:
⋛⋋⊱⋋飞☠扬
时间:
2012-11-26 22:32
用你的方法 很简单的 不用乱
public class Demo {
public static void main(String[] args) {
//用你的方法 FOR循环 最后的结果是 的数肯定是6位数 所有每个位上的数 分别是 i6 i5 i4 i3 i2 i1
//主要把这些数遍历出来 组合在一起就可以了 而且好理解 最后还能算出来 这样的数有多少个
int count = 0;//计数器
for (int i6 = 1; i6 <= 6; i6++) {//最外层 第6位
for (int i5 = 1; i5 <= 6; i5++) {
for (int i4 = 1; i4 <=6; i4++) {
for (int i3 = 1; i3 <=6; i3++) {
for (int i2 = 1; i2 <=6; i2++) {
for (int i1 = 1; i1 <=6; i1++) {//最里层 最后一位 "个位"
count++;//每打印一次 计数器+1
System.out.println(i6*100000 + i5*10000 + i4*1000 +i3*100 +i2*10 + i1);
}
}
}
}
}
}
System.out.println("一共有:" + count + "个");
}
}
作者:
宫明星
时间:
2012-11-26 22:43
本帖最后由 宫明星 于 2012-11-26 22:47 编辑
我也发一个吧。
发完才发现看错需求了,算了,懒得改了。
public class PaixuZuhe
{
public static void perm(char[] a,int k,int n)
{
int i;
if(k == n-1)
{
for(i=0;i<n;i++)
System.out.print(a[i] + " ");
System.out.println();
}
else
{
for(i=k;i<n;i++)
{
char temp;
temp=a[k];
a[k]=a[i];
a[i]=temp;
perm(a,k+1,n);
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
public static void main(String[] args)
{
char ch[]={'1','2','3','4','5','6'};
perm(ch,0,ch.length);
}
}
复制代码
作者:
崔洪全
时间:
2012-12-1 11:40
宫明星 发表于 2012-11-26 22:43
我也发一个吧。
发完才发现看错需求了,算了,懒得改了。
你的代码是我想看到的另外一种结果,输出所有的排列组合,但是整篇的代码我是在是看不懂,恳请您给加点注释。。。跪谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2