1 条题解
-
1
C++ :
#include<bits/stdc++.h> using namespace std; int a[10][10],r[10][10],c[10][10],g[10][10]; char s[10][10]; void prin() { for (int i=1;i<=9;i++){ for (int j=1;j<=9;j++) cout<<a[i][j]; cout <<endl; } } void dfs(int x,int y) { //if (x<2) cout << endl << x <<" "<<y; if (x > 9){ prin();return; } if (a[x][y]){ if (y == 9) dfs(x+1,1); else dfs(x,y+1); } else{ int k = 3 * ((x - 1) / 3) + (y - 1) / 3 + 1; for (int i=1;i<=9;i++) if (!r[x][i] && !c[y][i] && !g[k][i]){ a[x][y] = i; r[x][i] = 1; c[y][i] = 1; g[k][i] = 1; if (y == 9) dfs(x+1,1); else dfs(x,y+1); a[x][y] = 0; r[x][i] = 0; c[y][i] = 0; g[k][i] = 0; } } } int main() { for (int i=1;i<=9;i++){ cin >> s[i]; for (int j=1;j<=9;j++){ if (s[i][j-1] != '?'){ int x = s[i][j-1]-'0'; a[i][j]= x; r[i][x] = 1; c[j][x] = 1; int k = 3 * ((i - 1) / 3) + (j - 1) / 3 + 1; g[k][x] = 1; } } } //for (int i=1;i<=9;i++) //for (int j=1;j<=9;j++) if (g[i][j]) cout << i << j <<endl; dfs(1,1); return 0; }
信息
- ID
- 1090
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者