黑马程序员技术交流社区
标题:
排列组合问题,有没有方法,给定几个数字,就能算出有多少...?
[打印本页]
作者:
zhangjianwin
时间:
2016-9-12 00:06
标题:
排列组合问题,有没有方法,给定几个数字,就能算出有多少...?
/*3.分析以下需求,并用代码实现:
(1)打印由7,8,9三个数组组成的三位数,要求该三位数中任意两位数字不能相同
(2)打印格式最后的三位数字以空格分隔,如789 798 879 897 978 987
分析:
输入三个数字;*/
package com.heima.work13;
import java.util.Scanner;
public class TestWork03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[3];
System.out.println("请输入第一个数字:");
arr[0] = sc.nextInt();
System.out.println("请输入第二个数字:");
arr[1] = sc.nextInt();
System.out.println("请输入第三个数字:");
arr[2] = sc.nextInt();
if(arr[0]==arr[1]||arr[0]==arr[2]||arr[1]==arr[2])
System.out.println("输入数字不能相同!");
String str = result(arr);
System.out.println("三个数字的所有组合为:"+str);
}
//穷举法:
public static String result(int[] arr) {
StringBuilder str = new StringBuilder("");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
for (int j2 = 0; j2 < arr.length; j2++) {
if (arr[i] != arr[j] && arr[i] != arr[j2]
&& arr[j] != arr[j2])
str = str.append(arr[i]).append(arr[j]).append(arr[j2]).append(" ");
}
}
}
return str.toString().trim();
}
}
作者:
18333601807
时间:
2016-9-12 00:08
你可以考虑下用递归的方法实现,然后在写个static方法存储个数,可以实现这个需求。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2