uestc 1222 Sudoku 搜索
来源:互联网 发布:获取数组赋值的长度 编辑:程序博客网 时间:2024/04/28 22:42
#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<bits/stdc++.h>using namespace std;int g[200][200];int r[200][200];int c[200][200];int mp[200][200];char s[200][200],flag;int fnc(int x,int y){ if(x<2) { if(y<2) return 0; else return 1; } else { if(y<2) return 2; else return 3; }}void dfs(int x,int y){ if(flag==1) return ; int i,j,m; if(x==4) { for(i=0; i<4; i++) { for(j=0; j<4; j++) printf("%d",g[i][j]); printf("\n"); } flag=1; return ; } else if(y>=4) dfs(x+1,0); else if(g[x][y]!=-1) dfs(x,y+1); else { m=fnc(x,y); for(i=1; i<=4; i++) { if(r[x][i]==0&&c[y][i]==0&&mp[m][i]==0) { g[x][y]=i; mp[m][i]=r[x][i]=c[y][i]=1; dfs(x,y+1); if(flag) return ; g[x][y]=-1; mp[m][i]=r[x][i]=c[y][i]=0; } } } return ;}int main(){ int _,i,j,t,cas=0; scanf("%d",&_); while(_--) { for(i=0; i<4; i++) scanf("%s",s[i]); memset(r,0,sizeof(r)); memset(c,0,sizeof(c)); memset(mp,0,sizeof(mp)); for(i=0; i<4; i++) for(j=0; j<4; j++) { if(s[i][j]=='*') g[i][j]=-1; else { t=s[i][j]-'0'; mp[fnc(i,j)][t]=r[i][t]=c[j][t]=1; g[i][j]=t; } } printf("Case #%d:\n",++cas); flag=0; dfs(0,0); } return 0;}
0 0
- uestc 1222 Sudoku 搜索
- uestc 1222 Sudoku
- Sudoku - ccpc2015 && UESTC 1222
- UESTC 1222 Sudoku
- ccpc Sudoku(搜索)
- POJ2676--Sudoku(搜索)
- POJ2676-搜索-Sudoku
- uestc oj 1035 论文搜索
- nyoj 722 Sudoku (暴力搜索)
- HDU 1426 Sudoku Killer(搜索)
- UVALive 4763Sudoku Extension(搜索)
- 2015 UESTC Winter Training 中的简单搜索
- UESTC 1608状压+记忆化搜索
- HDOJ 4069 Squiggly Sudoku 精确覆盖+搜索
- POJ 2676 Sudoku (数独 搜索)
- poj 3074 Sudoku (精确覆盖,DLX,搜索)
- hdu 1426 Sudoku Killer【深度优先搜索】
- poj2676——Sudoku(深度搜索)
- Android Studio系列教程六--Gradle多渠道打包
- Motion Detection
- Android设置Settings:PreferenceFragment【4】
- 大数减法
- ORA-01555补充
- uestc 1222 Sudoku 搜索
- 解决没有my.ini配置文件MySql Error Code: 2006 – MySQL 服务器已离线错误
- 文章标题
- 反射(二)---newInstance、get\set、invoke
- AsyncHttpClient放在子线程执行时抛出异常的解决方法
- 两个图片来回切换
- Android 4.4Telephony流程分析SIM卡开机时的初始化
- 杭电HDU1002(大数加法)
- Object-C 实现几种排序算法