C# · 12月 19, 2021

C语言:解决九宫格问题

题目:1~9这九个数字分布在九宫格上,要求三条纵线、三条横线和两条对角线都相等。利用C语言解出所有答案。

#include

int main()

{

unsigned char array[3][3] = {{1,1,1},{1,1}};

for(array[0][0] = 1; array[0][0] < 10; array[0][0]++)

{

for(array[0][1] = 1; array[0][1] < 10; array[0][1]++)

{

if(array[0][1] == array[0][0])

continue;

for(array[0][2] = 1; array[0][2] < 10; array[0][2]++)

{

if(array[0][2] == array[0][0])

continue;

if(array[0][2] == array[0][1])

continue;

if((array[0][0] + array[0][1] + array[0][2]) != 15)

continue;

for(array[1][0] = 1; array[1][0] < 10; array[1][0]++)

{

if(array[1][0] == array[0][0])

continue;

if(array[1][0] == array[0][1])

continue;

if(array[1][0] == array[0][2])

continue;

for(array[1][1] = 1; array[1][1] < 10; array[1][1]++)

{

if(array[1][1] == array[0][0])

continue;

if(array[1][1] == array[0][1])

continue;

if(array[1][1] == array[0][2])

continue;

if(array[1][1] == array[1][0])

continue;

for(array[1][2] = 1; array[1][2] < 10; array[1][2]++)

{

if(array[1][2] == array[0][0])

continue;

if(array[1][2] == array[0][1])

continue;

if(array[1][2] == array[0][2])

continue;

if(array[1][2] == array[1][0])

continue;

if(array[1][2] == array[1][1])

continue;

if((array[1][0] + array[1][1] + array[1][2]) != 15)

continue;

for(array[2][0] = 1; array[2][0] < 10; array[2][0]++)

{

if(array[2][0] == array[0][0])

continue;

if(array[2][0] == array[0][1])

continue;

if(array[2][0] == array[0][2])

continue;

if(array[2][0] == array[1][0])

continue;

if(array[2][0] == array[1][1])

continue;

if(array[2][0] == array[1][2])

continue;

if((array[0][0] + array[1][0] + array[2][0]) != 15)

continue;

for(array[2][1] = 1; array[2][1] < 10; array[2][1]++)

{

if(array[2][1] == array[0][0])

continue;

if(array[2][1] == array[0][1])

continue;

if(array[2][1] == array[0][2])

continue;

if(array[2][1] == array[1][0])

continue;

if(array[2][1] == array[1][1])

continue;

if(array[2][1] == array[1][2])

continue;

if(array[2][1] == array[2][0])

continue;

if((array[0][1] + array[1][1] + array[2][1]) != 15)

continue;

for(array[2][2] = 1; array[2][2] < 10; array[2][2]++)

{

if(array[2][2] == array[0][0])

continue;

if(array[2][2] == array[0][1])

continue;

if(array[2][2] == array[0][2])

continue;

if(array[2][2] == array[1][0])

continue;

if(array[2][2] == array[1][1])

continue;

if(array[2][2] == array[1][2])

continue;

if(array[2][2] == array[2][0])

continue;

if(array[2][2] == array[2][1])

continue;

if((array[2][0] + array[2][1] + array[2][2]) != 15)

continue;

if((array[0][2] + array[1][2] + array[2][2]) != 15)

continue;

if((array[0][0] + array[1][1] + array[2][2]) != 15)

continue;

if((array[0][2] + array[1][1] + array[2][0]) != 15)

continue;

printf(“%d %d %dn”,array[0][0],array[0][1],array[0][2]);

printf(“%d %d %dn”,array[1][0],array[1][1],array[1][2]);

printf(“%d %d %dn”,array[2][0],array[2][1],array[2][2]);

printf(“n”);

}

}

}

}

}

}

}

}

}

getchar();

}

结果如下: