Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
Register

## RE!!!附代码，求牛人指教

Posted by shenfangyi at 2006-10-17 06:01:35 on Problem 2918
```#include<stdio.h>
char a[9][7000000];
int r[9][10],c[9][10],z[3][3][10];
struct
{
int x,y;
}b[82];
main()
{
int n;
scanf("%d",&n);
for(int nn=1;nn<=n;nn++)
{
gets(a[0]);
int bb=0;
for(int i=0;i<9;i++)
{
gets(a[i]);
int k=0;
for(int j=0;j<9;j++)
{
while((a[i][k]<'0')||(a[i][k]>'9'))k++;
a[i][j]=a[i][k];
k++;
}
a[i][9]=0;
for(int j=0;j<9;j++)
{
if(a[i][j]=='0')
{
b[bb].x=i;
b[bb].y=j;
bb++;
}
else r[i][a[i][j]-'0']=c[j][a[i][j]-'0']=z[i/3][j/3][a[i][j]-'0']=1;
}
}
int i=0;
while(i<bb)
{
int j=a[b[i].x][b[i].y]-'0'+1;
for(;j<10;j++)
{
if((!r[b[i].x][j])&&(!c[b[i].y][j])&&(!z[b[i].x/3][b[i].y/3][j]))
{
r[b[i].x][j]=c[b[i].y][j]=z[b[i].x/3][b[i].y/3][j]=1;
a[b[i].x][b[i].y]=j+'0';
break;
}
}
if(j<10)
{
i++;
if(i<bb)a[b[i].x][b[i].y]='0';
}
else
{
i--;
r[b[i].x][a[b[i].x][b[i].y]-'0']=c[b[i].y][a[b[i].x][b[i].y]-'0']=z[b[i].x/3][b[i].y/3][a[b[i].x][b[i].y]-'0']=0;
}
}
printf("Scenario #%d:\n",nn);
for(int i=0;i<9;i++)puts(a[i]);
puts("");
}
}
```

Followed by: