2 条题解
-
0
#include <bits/stdc++.h> using namespace std; int a[10][10], b[10][10]; bool vrow[10][10], vcol[10][10], vb[10][10], bk; void dfs(int x, int y) { if (bk) return; if (x == 10) { bk = 1; return; } if (y == 10) { dfs(x + 1, 1); return; } if (a[x][y] != 0) { dfs(x, y + 1); } else { for (int t = 1; t <= 9; t++) { if (!vrow[x][t] && !vcol[y][t] && !vb[b[x][y]][t]) { vrow[x][t] = vcol[y][t] = vb[b[x][y]][t] = 1; a[x][y] = t; dfs(x, y + 1); if (bk) return; vrow[x][t] = vcol[y][t] = vb[b[x][y]][t] = 0; a[x][y] = 0; } } } } int main() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { b[i][j] = (i - 1) / 3 * 3 + (j + 2) / 3; } } memset(vrow, 0, sizeof(vrow)); memset(vcol, 0, sizeof(vcol)); memset(vb, 0, sizeof(vb)); for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { scanf("%d", &a[i][j]); if (a[i][j] != 0) { vrow[i][a[i][j]] = 1; vcol[j][a[i][j]] = 1; vb[b[i][j]][a[i][j]] = 1; } } } bk = 0; dfs(1, 1); for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { printf("%d ", a[i][j]); } printf("\n"); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; int a[10][10],b[10][10]; bool vrow[10][10],vcol[10][10],vb[10][10],bk; void dfs(int x,int y) { if(bk) return ; if(x==10) { bk=1; return ; } if(y==10) { dfs(x+1,1); return ; } if(a[x][y]!=0) dfs(x,y+1); else { for(int t=1;t<=9;t++) { if( vrow[x][t]==0 && vcol[y][t]==0 && vb[ b[x][y] ][t]==0) { vrow[x][t]=vcol[y][t]=vb[ b[x][y] ][t]=1; a[x][y]=t; dfs(x,y+1);if(bk) return; vrow[x][t]=vcol[y][t]=vb[ b[x][y] ][t]=0; a[x][y]=0; } } } } int main() { for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)b[i][j]=(i-1)/3 * 3+ (j+2)/3; memset(vrow,0,sizeof(vrow));memset(vcol,0,sizeof(vcol));memset(vb,0,sizeof(vb)); for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) { scanf("%d",&a[i][j]); if(a[i][j]!=0) { vrow[i][a[i][j]]=1; vcol[j][a[i][j]]=1; vb[b[i][j]][a[i][j]]=1; } } bk=0; dfs(1,1); for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++) printf("%d ",a[i][j]); printf("\n");} return 0; }
- 1
信息
- ID
- 460
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 114
- 已通过
- 34
- 上传者