思路:记录每行每列每一个宫已经出现的数字就可以。数据比較弱

另外POJ 3074 3076 必须用剪枝策略。但实现较麻烦,还是以后学了DLX再来做吧

//Accepted	160K	0MS
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N =15;
char sudo[N][N];
bool visr[N][N],visc[N][N],visg[N][N];
int pos[N][N];
bool flag;
void print()
{
for(int i=1;i<=9;i++)
printf("%s\n",sudo[i]+1);
}
void dfs(int x,int y)
{
if(y==10)
{
dfs(x+1,1);
return ;
}
if(x==10)
{
print();
flag=1;
return ;
}
if(sudo[x][y]!='0')
{
dfs(x,y+1);
return ;
}
for(int i=1;i<=9&&!flag;i++)
{
if(visr[x][i]==0&&visc[y][i]==0&&visg[pos[x][y]][i]==0)
{
sudo[x][y]='0'+i;
visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=1;
dfs(x,y+1);
sudo[x][y]='0';
visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=0;
}
}
}
void ini()
{
flag = false ;
memset(visr,0,sizeof(visr));
memset(visc,0,sizeof(visc));
memset(visg,0,sizeof(visg));
}
int main()
{
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
pos[i][j]=((j-1)/3+1)+3*((i-1)/3); int T;
scanf("%d",&T);
for(int cas=1;cas<=T;cas++)
{
printf("Scenario #%d:\n",cas);
ini();
for(int i=1;i<=9;i++)
scanf("%s",sudo[i]+1);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
int val=sudo[i][j]-'0';
visr[i][val]=true;
visc[j][val]=true;
visg[pos[i][j]][val]=true;
}
dfs(1,1);
puts("");
}
return 0;
}

最新文章

  1. linux下使用shell 自动执行脚本文件
  2. Python TODO
  3. 接口测试第十二课(fidller过滤)(转)
  4. 在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错
  5. iOS10 UI教程视图的边界与视图的框架
  6. 了解Browserify
  7. Samza文档翻译 : Concepts
  8. mongodb3.2系统性学习——2、write concern mongodb 写安全机制
  9. Internal Server Error
  10. trycatch放在for循环的里面还是外面好
  11. 关系型数据库工作原理-事务管理(一)(翻译自Coding-Geek文章)
  12. python_特殊函数
  13. 428 Setup MySQL + - 改
  14. ISP PIPLINE (附加1) Green Imbalance
  15. liunx驱动----点亮LED
  16. C#高级编程(第九版) 知识点梳理
  17. spring框架学习笔记3:使用注解代替配置文件
  18. python路径相关操作
  19. python3 装饰器应用举例
  20. 前端小炒的win7使用笔记(收藏篇)

热门文章

  1. ASP.NET - 在线编辑器(FreeTextBox)
  2. 图解C#_事件
  3. 2数组的slice和splice方法
  4. Qt控件精讲一:按钮
  5. “add measurements”(添加度量)菜单问题
  6. OpenCV中遇到Microsoft C++ 异常 cv::Exception
  7. Win7安装vs2010失败
  8. java中怎么判断一个字符串中包含某个字符或字符串
  9. uva 11732 - strcmp() Anyone? 不错的Trie题
  10. 让Android中的webview支持页面中的文件上传