解题思路:用的是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 人评分
三角形 (C++代码)记忆化搜索浏览:1318 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
C语言考试练习题_保留字母 (C语言代码)浏览:743 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:699 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |
简单的a+b (C语言代码)浏览:574 |
矩形面积交 (C++代码)浏览:1204 |
sizeof的大作用 (C语言代码)浏览:1138 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:538 |