问题描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
输入格式
无输入
输出格式
输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成
1:2:3的比例,试求出所有满足条件的三个三位数。
例如:三个三位数192,384,576满足以上条件。
输入格式
无输入
输出格式
输出每行有三个数,为满足题设三位数。各行为满足要求的不同解。
public class Main6 {
public static int[] arrays = { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
flags = new int[9];
public static void main(String[] args) {
search(0);
}
// 递归,使用全排列
public static void search(int cur) {
if (cur > 9) {
return;
}
if (cur == 9) {
// 计算是否符合要求
int a = flags[0] * 100 + flags[1] * 10 + flags[2];
int b = flags[3] * 100 + flags[4] * 10 + flags[5];
int c = flags[6] * 100 + flags[7] * 10 + flags[8];
if (b % a == 0 && b / a == 2 && c % a == 0 && c / a == 3) {
System.out.println(a + " " + b + " " + c + " ");
}
return;
} else {
// 递归进行全排列
for (int i = 0; i < 9; i++) {
// 判断该数字是否有出现
boolean fla = false;
for (int j = 0; j < cur; j++) {
if (arrays[i] == flags[j]) {
fla = true;
break;
}
}
// 没有出现就继续递归
if (!fla) {
flags[cur] = arrays[i];
search(cur + 1);
}
}
}
}
}