题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将1,2,⋯,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。
输入输出格式
输入格式:
木有输入
输出格式:
若干行,每行3个数字。按照每行第1个数字升序排列。
输入输出样例
输入样例#1:
无
输出样例#1:
192 384 576
* * *
...
* * *
(输出被和谐了)
public class Main {
// 回溯算法,列出所有可能的情况
static void recall(int[] a, int k) {
if (k == a.length - 1) {
select(a);
return;
}
for (int i = k; i < a.length; i++) {
{
int t = a[i];
a[i] = a[k];
a[k] = t;
}
recall(a, k + 1);
{// 回溯
int t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}
// 筛选
static void select(int[] a) {
int sum1 = a[0] * 100 + a[1] * 10 + a[2];
int sum2 = a[3] * 100 + a[4] * 10 + a[5];
int sum3 = a[6] * 100 + a[7] * 10 + a[8];
// 输出满足1:2:3的情况
if (sum1 * 2 == sum2 && sum1 * 3 == sum3 && sum2 * 3 == sum3 * 2) {
System.out.println(sum1 + " " + sum2 + " " + sum3);
}
}
public static void main(String[] args) {
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
recall(a, 0);
}
}
输出结果:
192 384 576
219 438 657
273 546 819
327 654 981