代码:
public class Test {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4};
int num = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
for (int k = 0; k < array.length; k++) {
// 保证三位数中的每一位都不相同
if (i != j && i != k && j != k) {
System.out.print("" + array[i] + array[j] + array[k] + " ");
num++;
}
}
}
}
System.out.println("\n一共有:" + num + "个");
}
}
结果:
123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432
一共有:24个
解释:
查看了网上很多的答案,大多数人的答案就是这种的,如下图:
确实没错,可以得出正确的答案,但是具有这样的只能是4个数字
,扩展性不强,并且我感觉不是那么好理解,我查阅资料之后发现这其实是高中排列组合的问题,从4个不相同的数字中随机取出3个,并且组成的三位数不能相同,所以那就是 :
所以那就是4*3*2
,程序中的第一个for循环
就会循环4次
,第二个for循环
会循环3次
(因为i != k),第三个for循环
会循环2次
(因为i != k && j != k),所以三个循环
组成了4*3*2