黑马程序员技术交流社区
标题:
排列组合问题,求解
[打印本页]
作者:
谢波
时间:
2013-3-18 11:58
标题:
排列组合问题,求解
本帖最后由 谢波 于 2013-3-18 15:56 编辑
比如说数组:int[] arr = {1,2,3}; 打印出他们的所有2个数的组合
结果是:12 13 23
求打印任意个数元素的任意个数的所有组合思路和详细代码,最好用递归
谢谢了
排列我会了
已经解决 谢谢大家 的帮助
奉上源代码:
public class Combination1 {
public static void main(String[] args) {
String input = "abcd";
int num = 4;
Combine(input, num);
}
private static void Combine(String input, int num) {
char[] a = input.toCharArray();
String b = "";
Combine(a, num, b, 0);
}
private static void Combine(char[] a, int num, String b, int low)
{
if (num == 0)
{
System.out.println(b);
}
else
{
for (int i = low; i < a.length; i++)
{
b += a[i];
Combine(a, num - 1, b, i+1);
b=b.substring(0, b.length()-1);
}
}
}
}
复制代码
作者:
张洪慊
时间:
2013-3-18 12:11
//双重循环嵌套,穷举法
class Arr
{
public static void main(String[] args)
{
int[] arr={1,2,3};
for(int i=0;i<arr.length;++i)
for(int j=i+1;j<arr.length;++j)
System.out.println(""+arr[i]+arr[j]);
}
}
复制代码
作者:
赵亚威
时间:
2013-3-18 12:37
public class ArrayTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={0,1,2,3,4,5,6,7,8,9};
for(int x=0;x<arr.length;x++){
for(int y=0;y<arr.length;y++){
if(arr[x]==0&&arr[y]==0);
else
if(arr[x]==0)
System.out.print(y+" ");
else
System.out.print(x+""+y+" ");
}
System.out.println();
}
}
}
思想:
1.对数组进行组合 而且是2位数的 所以用嵌套for循环
2.因为组合所以都的从角标为0的开始 这里声明变量x=0 x<arr.length
y=0 y<arr.length
3.组合有为0的 就去掉不要的 用if进行判断
4.得出想要的结果进行打印
作者:
谢波
时间:
2013-3-18 12:48
谢谢楼上 的回答
可能是我的要求没说清楚 我的意思是数组和指定的个数是不确定的
作者:
宋耀冬
时间:
2013-3-18 14:34
arr.length = 数组的长度
用它控制循环的次数
作者:
陈丽莉
时间:
2013-3-18 14:39
谢波 发表于 2013-3-18 12:48
谢谢楼上 的回答
可能是我的要求没说清楚 我的意思是数组和指定的个数是不确定的 ...
可以将这个 修改到帖子的提问中去~
作者:
宋耀冬
时间:
2013-3-18 14:42
楼主多研究一下二维数组吧 应该对你有帮助
作者:
张洪慊
时间:
2013-3-18 14:57
张洪慊 发表于 2013-3-18 12:11
呵呵,就这两句话..没用啥高深知识,以为楼主肯定懂,所以没加.
好吧,"一失足成千古恨"
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2