解题思路:用的是dfs进行数的全排列之后对数组进行分解成三个三位数再判断是否符合比例
注意事项:这道题有个坑,数组变成三个三位数的时候必须是b = a[1]*100 + a[2]*10 + a[3]; c = a[4]*100 + a[5]*10 + a[6]; d = a[7]*100 + a[8]*10 + a[9],反过来b = a[9]*100 + a[8]*10 + a[7]; c = a[6]*100 + a[5]*10 + a[4]; d = a[3]*100 + a[2]*10 + a[1];这样定义三位数就会导致出来的答案因为每行的顺序不一样而报错
参考代码:
public class Main {
private static int[] a = new int[10];
private static int[] book = new int[10];
private static int n = 9;
public static void main(String[] args) {
dfs(1);
}
private static void Judge(int[] a){
// double b = a[9]*100 + a[8]*10 + a[7];
// double c = a[6]*100 + a[5]*10 + a[4];
// double d = a[3]*100 + a[2]*10 + a[1];
double b = a[1]*100 + a[2]*10 + a[3];
double c = a[4]*100 + a[5]*10 + a[6];
double d = a[7]*100 + a[8]*10 + a[9];
if (c/b == 2 && d/b == 3){
System.out.println((int)b + " " + (int)c + " " + (int)d);
}
}
private static void dfs(int step){
int i;
if(step == n + 1){
Judge(a);
return;
}
for(i = 1; i <= n; i++){
if(book[i] == 0) {
a[step] = i;
book[i] = 1;
dfs(step + 1);
book[i] = 0;
}
}
return;
}
}
0.0分
0 人评分
A+B for Input-Output Practice (IV) (C++代码)浏览:677 |
分糖果 (C++代码)浏览:1447 |
DNA (C语言描述,数据结构)浏览:855 |
校门外的树 (C语言代码)浏览:700 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:666 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:676 |
1017题解浏览:605 |
1124题解浏览:595 |
Tom数 (C语言代码)浏览:725 |
数字游戏 (C++代码)浏览:1184 |