题目:1~9这九个数字分布在九宫格上,要求三条纵线、三条横线和两条对角线都相等。利用C语言解出所有答案。
#include <stdio.h>
int main()
{
unsigned char array[3][3] = {{1, 1, 1}, {1, 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 %d\n", array[0][0], array[0][1], array[0][2]);
printf("%d %d %d\n", array[1][0], array[1][1], array[1][2]);
printf("%d %d %d\n", array[2][0], array[2][1], array[2][2]);
printf("\n");
}
}
}
}
}
}
}
}
}
getchar();
}
结果如下: