75 lines
1.9 KiB
C
75 lines
1.9 KiB
C
#include "io.inc"
|
|
int make[3][3];
|
|
int color[10];
|
|
int count[1];
|
|
int i;
|
|
int j;
|
|
|
|
void origin(int N) {
|
|
for (i = 0; i < N; i++) {
|
|
for (j = 0; j < N; j++)
|
|
make[i][j] = 0;
|
|
}
|
|
}
|
|
|
|
void search(int x, int y, int z) {
|
|
int s;
|
|
int i;
|
|
int j;
|
|
if ((y > 0 || y < 0) || x == 0 ||
|
|
make[x - 1][0] + make[x - 1][1] + make[x - 1][2] == 15) {
|
|
if (x == 2 && y == 2) {
|
|
make[2][2] = 45 - z;
|
|
s = make[0][0] + make[0][1] + make[0][2];
|
|
if (make[1][0] + make[1][1] + make[1][2] == s &&
|
|
make[2][0] + make[2][1] + make[2][2] == s &&
|
|
make[0][0] + make[1][0] + make[2][0] == s &&
|
|
make[0][1] + make[1][1] + make[2][1] == s &&
|
|
make[0][2] + make[1][2] + make[2][2] == s &&
|
|
make[0][0] + make[1][1] + make[2][2] == s &&
|
|
make[2][0] + make[1][1] + make[0][2] == s) {
|
|
count[0] = count[0] + 1;
|
|
for (i = 0; i <= 2; i++) {
|
|
for (j = 0; j <= 2; j++) {
|
|
printInt(make[i][j]);
|
|
printStr(" ");
|
|
}
|
|
printStr("\n");
|
|
}
|
|
printStr("\n");
|
|
}
|
|
} else {
|
|
if (y == 2) {
|
|
make[x][y] = 15 - make[x][0] - make[x][1];
|
|
if (make[x][y] > 0 && make[x][y] < 10 && color[make[x][y]] == 0) {
|
|
color[make[x][y]] = 1;
|
|
if (y == 2)
|
|
search(x + 1, 0, z + make[x][y]);
|
|
else
|
|
search(x, y + 1, z + make[x][y]);
|
|
color[make[x][y]] = 0;
|
|
}
|
|
} else {
|
|
for (i = 1; i <= 9; i++) {
|
|
if (color[i] == 0) {
|
|
color[i] = 1;
|
|
make[x][y] = i;
|
|
if (y == 2)
|
|
search(x + 1, 0, z + i);
|
|
else
|
|
search(x, y + 1, z + i);
|
|
make[x][y] = 0;
|
|
color[i] = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int main() {
|
|
origin(3);
|
|
search(0, 0, 0);
|
|
printInt(count[0]);
|
|
return judgeResult % Mod; // 106
|
|
}
|