| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:跪求错误。。。有注释。In Reply To:跪求错误。。。有注释。 Posted by:2828 at 2010-04-09 01:35:22 > #include<iostream>
>
> using namespace std;
>
> char s[100][100];
> bool hash[100];
>
> char find_num()
> {
> for(int i=1;i<=9;i++)
> {
> if(!hash[i])
> return (i+'0');
> }
> }
>
> int main()
> {
> int test,i,j,t;
> scanf("%d",&test);//cin>>test;
> scanf("\n");
> for(t=0;t<test;t++)
> {
> for(i=0;i<9;i++)
> gets(s[i]);
> int mark=true;
> while(mark)
> {
> mark=false;
> for(i=0;i<9;i++)//每一行找出只有一个没有填的
> {
> int sumOfZero=0,position;
> memset(hash,false,sizeof(hash));
> for(j=0;j<9;j++)//9个数字
> {
> if('0'==s[i][j])
> {
> sumOfZero++;
> position=j;//记下第几个没填
> mark=true;
> }
> else
> hash[s[i][j]-'0']=true;//此数字已经有了
> }
> if(sumOfZero==1)//此行只有一个数字没有填,可以填了
> {
> s[i][position]=find_num();
> }
> }
>
> for(i=0;i<9;i++)//每一列找出只有一个没有填的
> {
> int sumOfZero=0,position;
> memset(hash,false,sizeof(hash));
> for(j=0;j<9;j++)
> {
> if('0'==s[j][i])
> {
> sumOfZero++;
> position=j;
> mark=true;
> }
> else
> hash[s[j][i]-'0']=true;
> }
> if(sumOfZero==1)
> {
> s[position][i]=find_num();
> }
> }
>
> int x,y;
> for(i=0;i<9;i=i+3)//每一个块内找出只有一个没填的,一共有9块
> {
> for(j=0;j<9;j=j+3)
> {
> int sumOfZero=0,positionX,positionY,sum=0;
> memset(hash,false,sizeof(hash));
> for(x=i;x<i+3;x++)
> {
> for(y=j;y<j+3;y++)
> {
> if(s[x][y]=='0')
> {
> sumOfZero++;
> positionX=x;
> positionY=y;
> mark=true;
> }
> else
> hash[s[x][y]-'0']=true;
> }
> }
> if(sumOfZero==1)
> s[positionX][positionY]=find_num();
> }
> }
> }
> cout<<"Scenario #"<<t+1<<":"<<endl;
> for(i=0;i<9;i++)
> {
> puts(s[i]);
> }
> cout<<endl;
> }return 0;
> }
>
>
>
>
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator