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 |
跪求错误。。。有注释。#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