博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1426 Sudoku Killer
阅读量:6036 次
发布时间:2019-06-20

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

数独(DFS)。

非常忧伤的一道题,先是剪枝的三个数组开成[9][9]导致 越界了WA。

然后就是每两组输出之间有空行,可是最后一组后面不能输出空行。PE好多次。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x7fffffff#define eps 1e-8#define LL long long#define PI 3.141592654#define CLR(a,b) memset(a,b,sizeof(a))#define FORi(n) for(int i=0;i
80) show(); else { int i=n/9,j=n%9; if(!g[i][j]) { for(int k=1; k<=9; k++) if(!visx[i][k]&&!visy[j][k]&&!box[i/3*3+j/3][k]) { g[i][j]=k; visx[i][k]=visy[j][k]=box[i/3*3+j/3][k]=1; dfs(n+1); g[i][j]=0; visx[i][k]=visy[j][k]=box[i/3*3+j/3][k]=0; } } else dfs(n+1); }}int main(){ char ch[5]; bool flag=0; while(~scanf("%s",ch)) { CLR(visx,0); CLR(visy,0); CLR(box,0); if(ch[0]>='1'&&ch[0]<='9') g[0][0]=ch[0]-'0'; else if(ch[0]=='?') g[0][0]=0; if(g[0][0]) visx[0][g[0][0]]=visy[0][g[0][0]]=box[0][g[0][0]]=1; FORi(9) FORj(9) { if(i==0&&j==0)continue; scanf("%s",ch); if(ch[0]>='1'&&ch[0]<='9') g[i][j]=ch[0]-'0'; else if(ch[0]=='?') g[i][j]=0; if(g[i][j]) visx[i][g[i][j]]=visy[j][g[i][j]]=box[i/3*3+j/3][g[i][j]]=1; } if(!flag)flag=1; else printf("\n"); dfs(0); }}

转载地址:http://iiohx.baihongyu.com/

你可能感兴趣的文章
这个季节的忧伤,点到为止
查看>>
mysql通过配置文件进行优化
查看>>
省级网站群建设关注点
查看>>
工作第四天之采集资源
查看>>
innobackupex 在增量的基础上增量备份
查看>>
Windows Server 2012 R2 DirectAccess功能测试(2)App1服务器安装及配置
查看>>
基于清单的启动器的实现
查看>>
外网用户通过citrix打印慢的解决方法
查看>>
STL容器的使用
查看>>
关于std::map
查看>>
JXL导出Excel文件兼容性问题
查看>>
VBoot1.0发布,Vue & SpringBoot 综合开发入门
查看>>
centos7 安装wps 后 演示无法启动
查看>>
git简单命令
查看>>
LAMP编译部署
查看>>
XenDesktop7.6安装部署入门教程
查看>>
HashMap的工作原理及HashMap和Hashtable的区别
查看>>
GregorianCalendar日历程序
查看>>
Sublime 中运行 Shell 、Python、Lua、Groovy...等各种脚本
查看>>
【Java集合源码剖析】ArrayList源码剖析
查看>>