博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3111解数独。简单深搜不带剪枝
阅读量:5078 次
发布时间:2019-06-12

本文共 1758 字,大约阅读时间需要 5 分钟。

10天没写代码了啊。,一个这样的搜索写了两小时。。我擦。。

搜索部分没什么好说的。。主要就是visited标记位。。申明类型为int。以后每次visited就+1,回溯就-1。。这样就可以避免交叉的问题出现(感谢春哥的方法。)

#include
using namespace std;int map[10][10];int visited[10][10][10];void init(){ memset(visited,0,sizeof(visited));}bool dfs(int num){ int i,j; int k; i=num/9; j=num%9; while(num<=80&&map[i][j]!=-1) { num++; i=num/9; j=num%9; } i=num/9; j=num%9; if(num>=81) { return 1; } for(k=1;k<=9;k++) { if(!visited[i][j][k]) { visited[i][j][k]=1; map[i][j]=k; int l; for(l=0;l<=8;l++) { visited[i][l][map[i][j]]++; visited[l][j][map[i][j]]++; visited[(i/3)*3+l/3][(j/3)*3+l%3][map[i][j]]++; //cout<<(i/3)*3+l/3<<"|"<<(j/3)*3+l%3<
>t; bool tag=0; bool tag2=0; while(t--) { if(tag2) { char fuck[44]; cin>>fuck; } tag2=1; int i,j; int done=0; init(); for(i=0;i<=8;i++) { for(j=0;j<=8;j++) { char c; cin>>c; if(c=='?') { map[i][j]=-1; }else { map[i][j]=c-'0'; done++; int k; for(k=0;k<=8;k++) { visited[i][k][map[i][j]]++; visited[k][j][map[i][j]]++; visited[(i/3)*3+k/3][(j/3)*3+k%3][map[i][j]]++; //cout<<(i/3)*3+k/3<<"|"<<(j/3)*3+k%3<

  

转载于:https://www.cnblogs.com/cj695/archive/2012/08/17/2644745.html

你可能感兴趣的文章
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>