#include <stdio.h>
#include <cstring>
using namespace std;
int vis[10][10][10] = {0};
int a[10][10];
int turn(int x)
{
if(x%3==0) return x-2;
if(x%3==1) return x;
return x - 1;
}
void update(int x, int y, int val)
{
for(int i = 1; i <= 9; i++)
vis[x][i][val] = vis[i][y][val] = 1;
x = turn(x); y = turn(y);
for(int i = x; i <= x + 2; i++)
for(int j = y; j <= y + 2; j++)
vis[i][j][val] = 1;
}
int main()
{
while(1)
{
memset(vis, 0, sizeof(vis));
puts("game is on");
for(int i = 1; i <= 9; i++)
for(int j = 1; j <= 9; j++)
{
scanf("%d", &a[i][j]);
if(a[i][j]) update(i, j, a[i][j]);
}
while(1)
{
int flag = 0;
for(int i = 1; i <= 9; i++)
{
for(int j = 1; j <= 9; j++)
{
int num = 0, id;
for(int k = 1; k <= 9; k++)
{
if(vis[i][j][k]) num++;
else id = k;
}
if(num==8 && a[i][j]==0)
{
flag = 1;
a[i][j] = id;
update(i, j, id);
break;
}
}
if(flag) break;
}
if(!flag) break;
}
puts("-----------------ANS-------------------");
for(int i = 1; i <= 9; i++)
for(int j = 1; j <= 9; j++)
printf("%d%c", a[i][j], j==9?'\n':' ');
puts("next game");
}
}
借助计算机的快速计算能力,来完成简单的数独游戏,但是逻辑关系太简单了,复杂数独还是出不来的。
来源:https://www.cnblogs.com/loenvom/p/12175613.html