//目的: 输出 从N个元素里挑出K个组合数
// 例如 ABC中取2个有 AB BC AC static void combinations2(String[] arr, int len, int startPosition, String[] result)
{
// String[] arr = {"A","B","C","D","E","F"};
//combinations2(arr , 3, 0 , new String[3]);
if (len == 0)
{
System.out.println(Arrays.toString(result));
return;
}
for (int i = startPosition; i <= arr.length-len; i++)
{
result[result.length - len] = arr[i];
combinations2(arr, len-1, i+1, result);
}
}
// 例如 ABC中取2个有 AB BC AC static void combinations2(String[] arr, int len, int startPosition, String[] result)
{
// String[] arr = {"A","B","C","D","E","F"};
//combinations2(arr , 3, 0 , new String[3]);
if (len == 0)
{
System.out.println(Arrays.toString(result));
return;
}
for (int i = startPosition; i <= arr.length-len; i++)
{
result[result.length - len] = arr[i];
combinations2(arr, len-1, i+1, result);
}
}
解决方案 »
- JAVA中的异常 "AWT-EventQueue-0" ArrayIndexOutOfBoundsException
- 关于一个数组的小程序,有点不理解,请帮帮忙指导下!
- 一个正则表达式的问题
- 求助高手一个关于Java “ 包 ” 的小问题!!
- 在jpanel中绘图怎么不行啊?
- 几个刚刚从事java工作的奋斗者建群。。。。
- 都说java开发的界面程序很慢,能慢到哪里呀?是与别的工具开发的有天嚷之别吗?
- 关于在JBuilder中配置数据库的问题,大家帮助看一下
- scjp上的一道题
- 如何在字符串里输出"号?我需要在"前加入哪个转义符?
- 用Java反射,对B对象进行深度复制,B中含有List<A >属性,A 要求实例化为a ,再调用 a.setxx(B); 如何实现?
- 线程锁与if结合使用时出现的问题。。这到底是为什么呢?
combinations2(arr,3,1,new String[3]);
结果:[B, C, D]
[B, C, E]
[B, C, F]
[B, D, E]
[B, D, F]
[B, E, F]
[C, D, E]
[C, D, F]
[C, E, F]
[D, E, F]
第一次循环是先在result添加B,然后第二次循环添加C,第三次循环添加E,这样就变成[B,C,E],
此时len循环三次就变成0了,所以执行
if (len == 0)
{
System.out.println(Arrays.toString(result));
return;
}
就是打印一个[B,C,E]的循环。其它的也是一样