#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?' ':' '); puts("next game"); } }
借助计算机的快速计算能力,来完成简单的数独游戏,但是逻辑关系太简单了,复杂数独还是出不来的。