是组合数学中的"组合", 所以应该没有顺序问题, 水影129的是"排列", 情况数应该是15!(15的阶乘)倍.我是用迭代做的, 只是打印出来, 之前做了一个返回所有情况的二维数组, 结果内存溢出了, 情况太多, 就不要说数据了, 你看看打印的代码吧, 不过会打很长时间, 因为情况太多了, 应该是54! / 15!/ 39! = 8,654,327,655,120 种情况, 下面的代码我用20以内长度的都试过, 没有错误(我可怜的机器实在跑不动54选15):import java.util.ArrayList;public class PuKu { public static int count = 0; public static void main(String[] args) { ArrayList<String> arr = new ArrayList<String>(); for (int i = 0; i < 54; i++) { arr.add(i + ""); } compute(arr, 15); System.out.println(count); } public static void compute(ArrayList<String> arr, int num) { compute(arr, new ArrayList<String>(), num, 0); } private static void compute(ArrayList<String> arr, ArrayList<String> result, int num, int start) { if (result.size() == num) { count ++; System.out.println(result); } else { int size = arr.size(); if (size < num) { return; } for (int i = start; i < size; i++) { ArrayList<String> tempResult = new ArrayList<String>(result); tempResult.add(arr.get(i)); compute(arr, tempResult, num, i + 1); } } }}思想是迭代, 每次在result中增加一个, 每个级别的起始位置start都向后一位, 使得之前选过的不再选, 每得到一组结果就打印一次, 最后统计数量. 我这里是用ArrayList实现的, 为的是使代码更简明, 如果需要对数组进行组合, 请写在问题补充中.
public class aa { public static void main(String args[]){ String puke[]={"黑桃A","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃J","黑桃Q","黑桃K","红桃A","红桃2","红桃3","红桃4","红桃5","红桃6","红桃7","红桃8","红桃9","红桃10","红桃J","红桃Q","红桃K","梅花A","梅花2","梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花J","梅花Q","梅花K","方块A","方块2","方块3","方块4","方块5","方块6","方块7","方块8","方块9","方块10","方块J","方块Q","方块K","红司令","白司令"}; int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o; for(a=1;a<=40;a++){ for(b=a+1;b<=41;b++){ for(c=b+1;c<=42;c++){ for(d=c+1;d<=43;d++){ for(e=d+1;e<=44;e++){ for(f=e+1;f<=45;f++){ for(g=f+1;g<=46;g++){ for(h=g+1;h<=47;h++){ for(i=h+1;i<=48;i++){ for(j=i+1;j<=49;j++){ for(k=j+1;k<=50;k++){ for(l=k+1;l<=51;l++){ for(m=l+1;m<=52;m++){ for(n=m+1;n<=53;n++){ for(o=n+1;o<=54;o++){ System.out.println(puke[a-1]+","+puke[b-1]+","+puke[c-1]+","+puke[d-1]+","+puke[e-1]+","+puke[f-1]+","+puke[g-1]+","+puke[h-1]+","+puke[i-1]+","+puke[j-1]+","+puke[k-1]+","+puke[l-1]+","+puke[m-1]+","+puke[n-1]+","+puke[o-1]); } } } } } } } } } } } } } } } }}我帮你做好了,你自己在eclipse里面整理一下格式就可以了。我运行过了,可以的,不过效率不高,哈哈。