数独游戏
2016-03-19 19:00
288 查看
#include<stdio.h> #include<string.h> void work(int a[9][9], int x); int main() { int a[9][9];//代表对应位置所存放的数字,'0'表示空 for(int i = 0; i < 9; i++) { for(int j = 0; j < 9; j++) { scanf("%d",&a[i][j]); } } work(a,0); return 0; } int ok(int a[9][9], int i, int j, int k) { for(int l = 0; l < 9; l++) { if(a[i][l] == k || a[l][j] == k) return 0; } for(int l = i/3*3; l < i/3*3 + 3; l++) { for(int ll = j/3*3; ll < j/3*3 + 3; ll++) { if(a[l][ll] == k) return 0; } } return 1; } void print(int a[9][9]) { for(int i = 0; i < 9; i++) { for(int j = 0; j < 9; j++) { printf("%d ", a[i][j]); }printf("\n"); } } void work(int a[9][9], int x) { int i = x/9, j = x%9; if(x>80) { print(a); return; } if(a[i][j] != 0) work(a,x+1); else { for(int k = 1; k <= 9; k++) if(ok(a,i,j,k)) { a[i][j] = k; work(a,x+1); a[i][j] = 0; } } }