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:DvZ at 2012-08-21 13:36:09 > #include<stdio.h> > int map[10][10],flag; > struct tmp > { > int x,y; > }rec[81]; > int check(int x,int y,int num) > { > int i; > for(i=0;i<9;i++)//检查横竖 > { > if(map[x][i]==num) > return 0; > if(map[i][y]==num) > return 0; > } > int p,q; > for(p=x/3*3;p<=x/3*3+2;p++)//英语看不懂,不知道3*3里不能有同样的数字= =纠结半天 > { > for(q=y/3*3;q<=y/3*3+2;q++) > { > if(map[p][q]==num) > return 0; > } > } > return 1; > } > void dfs(int countr) > { > if(countr==-1) > { > flag=1; > return ; > } > for(int i=1;i<=9;i++) > { > if(check(rec[countr].x,rec[countr].y,i)) > { > map[rec[countr].x][rec[countr].y]=i;//填格 > dfs(countr-1); > if(flag) > return ; > map[rec[countr].x][rec[countr].y]=0;//回溯 > } > } > return ; > } > int main() > { > int t,countr,i,j; > char s[10]; > scanf("%d\n",&t); > while(t--) > { > flag=0; > countr=0; > for(i=0;i<9;i++) > { > gets(s); > for(j=0;j<9;j++) > { > map[i][j]=s[j]-'0'; > if(!map[i][j])//记录要填的格子 > { > rec[countr].x=i; > rec[countr++].y=j; > } > } > } > dfs(--countr);//据说后面搜起比较快= = > for(i=0;i<9;i++) > { > for(j=0;j<9;j++) > printf("%d",map[i][j]); > printf("\n"); > } > } > return 0; > } > > 没有初始化,本来以为会wa想不到过了,那就算了 看到题目和样例就应该想到呀^^ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator