解题思路:
注意事项:
参考代码:
import java.util.Scanner;
public class 九宫幻方1880 {
static int[] arr;
static int[] in;
static boolean bool=true;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
arr = new int[9];
in = new int[9];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
if (arr[i] != 0) {
in[arr[i] - 1] = 1;
}
}
dp(0);
if (bool) {
System.out.println("Too Many");
}
}
public static void dp(int t) {
if (t==9) {
int x1 = arr[0] + arr[1] + arr[2];
int x2 = arr[3] + arr[4] + arr[5];
int x3 = arr[6] + arr[7] + arr[8];
int y1 = arr[0] + arr[3] + arr[6];
int y2 = arr[1] + arr[4] + arr[7];
int y3 = arr[2] + arr[5] + arr[8];
int xy1 = arr[0] + arr[4] + arr[8];
int xy2 = arr[2] + arr[4] + arr[6];
if (x1 == x2 && x1 == x3 && x1 == y3 && x1 == y2 && x1 == y1
&& x1 == xy2 && x1 == xy1) {
System.out.println(arr[0] +" "+ arr[1]+" "+ arr[2]);
System.out.println(arr[3] +" "+ arr[4]+" "+ arr[5]);
System.out.println(arr[6] +" "+ arr[7]+" "+ arr[8]);
bool=false;
return;
}else {
return;
}
}
if (arr[t]!=0) {
dp(t+1);
return;
}
for (int i = 0; i < in.length; i++) {
if (in[i]==0) {
arr[t]=i+1;
in[i]=1;
dp(t+1);
in[i]=0;
arr[t]=0;
}
}
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复