HDU_1426——数独问题,DFS
数独游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。比如有这样一个题,大家可以仔细观察一下,在这里面每行、每列,以及每个3x3的方格都包含1-9这九个数字。
例题:

答案:

? 6 5 2 ? 7 1 ? 4
? ? 8 5 1 3 6 7 2
9 2 4 ? 5 6 ? 3 7
5 ? 6 ? ? ? 2 4 1
1 ? 3 7 2 ? 9 ? 5
? ? 1 9 7 5 4 8 6
6 ? 7 8 3 ? 5 1 9
8 5 9 ? 4 ? ? 2 3
3 6 5 2 8 7 1 9 4
4 9 8 5 1 3 6 7 2
9 2 4 1 5 6 8 3 7
5 7 6 3 9 8 2 4 1
1 8 3 7 2 4 9 6 5
2 3 1 9 7 5 4 8 6
6 4 7 8 3 2 5 1 9
8 5 9 6 4 1 7 2 3
#include<iostream>
using namespace std;
char fch[][];
int r[][],c[][],d[][],co;
struct
{
int i,j;
int w;
}que[];
int f(int i,int j)//计算位于第几个小方格
{
int r=i%==?i/:i/+;
int c=j%==?j/:j/+;
return (r-)*+c;
}
int dfs(int i)
{
if(i>=co) return ;
else
{
for(int j=;j<=;j++)
{
if(r[que[i].i][j]==&&c[que[i].j][j]==&&d[f(que[i].i,que[i].j)][j]==)
{
r[que[i].i][j]=;
c[que[i].j][j]=;
d[f(que[i].i,que[i].j)][j]=;
que[i].w=j;
if(dfs(i+)) return ;
r[que[i].i][j]=;
c[que[i].j][j]=;
d[f(que[i].i,que[i].j)][j]=;
}
}
return ;
}
}
int main()
{
int i,j,temp,mark=;
while(cin>>fch[][])
{
co=;
memset(r,,sizeof(r));
memset(c,,sizeof(r));
memset(d,,sizeof(r));
if(fch[][]!='?')
{
temp=fch[][]-'';
r[][temp]=;
c[][temp]=;
d[f(,)][temp]=;
}
else
{
que[co].i=;
que[co].j=;
co++;
}
for(i=;i<=;i++)
for(j=;j<=;j++)
{
if(i==&&j==) continue;
cin>>fch[i][j];
if(fch[i][j]!='?')
{
temp=fch[i][j]-'';
r[i][temp]=;
c[j][temp]=;
d[f(i,j)][temp]=;
}
else
{
que[co].i=i;
que[co].j=j;
co++;
}
}
if(mark==)
cout<<endl;
mark=;
int k;
if(dfs())
for(i=,k=;i<=;i++)
{
if(fch[i][]!='?')
cout<<fch[i][];
else cout<<que[k++].w;
for(j=;j<=;j++)
{
if(fch[i][j]!='?')
cout<<' '<<fch[i][j];
else cout<<' '<<que[k++].w;
}
cout<<endl;
} }
return ; }
HDU_1426——数独问题,DFS的更多相关文章
- 数独求解 DFS && DLX
题目:Sudoku 题意:求解数独.从样例和结果来看应该是简单难度的数独 思路:DFS 设置3个数组,row[i][j] 判断第i行是否放了j数字,col[i][j] 判断第i列是否放了j数字.squ ...
- 洛谷P1074 靶形数独【dfs】【剪枝】
题目:https://www.luogu.org/problemnew/show/P1074 题意: 数独的分数如下.一个数独的总分数就是权值乘所填数字之和. 现在给一个未完成的数独,问分数最高的数独 ...
- POJ2676 – Sudoku(数独)—DFS
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24081 Accepted: 11242 Specia ...
- 3109. [CQOI2013]新数独【DFS】
Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v). Output 输出包含9行,每行 ...
- 数独:dfs+剪枝+位运算+排除冗余+优化搜索顺序(未完)
和蓝桥杯以前一个题一样,但是数据加强了,博主水平有限,没做出来,先在这里记录一下,这里正解,下面是博主的超时做法.最近准备考研,不能深入学习了. 题目描述 数独是一种传统益智游戏,你需要把一个9 × ...
- poj 2676 数独问题 dfs
题意:完成数独程序,数独要求每行每列且每个3*3矩阵都必须是1~9的数字组成. 思路:dfs 用row[i][n] 记录第i行n存在 用col[j][n] 记录第j列n存在 grid[k][n] 记 ...
- NYOJ 722 数独 【DFS】+【预处理】
数独 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家须要依据9×9盘面上的已知数字,推理出全部剩余空格的数字,并满足每一 ...
- POJ - 2676 Sudoku 数独游戏 dfs神奇的反搜
Sudoku Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smalle ...
- B3109 [cqoi2013]新数独 搜索dfs
就是基于普通数独上的一点变形,然后就没什么了,普通数独就是进行一边dfs就行了. 题干: 题目描述 输入格式 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第 ...
随机推荐
- poj 3229 The Best Travel Design ( 图论+状态压缩 )
The Best Travel Design Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1359 Accepted: ...
- IE的CSS相关的BUG(整理一)
本来不想弄这个ie的bug的,真的很想让它快点死掉,可是事与愿违啊,没办法,还是贴出来,以备自用. 这个网页(http://haslayout.net/css/index)上例举了所有的IE和CSS相 ...
- [转] Gradle中的buildScript代码块
PS: 在build script中的task apply plugin: 'spring-boot' 需要 classpath("org.springframework.boot:spri ...
- INFORMATION_SCHEMA.COLUMNS 查询表字段语句
INFORMATION_SCHEMA.COLUMNS 视图以 sysobjects.spt_data type_info.systypes.syscolumns.syscomments.sysconf ...
- Drawable 着色的后向兼容方案
看到 Android Weekly 最新一期有一篇文章:Tinting drawables,使用 ColorFilter 手动打造了一个TintBitmapDrawable,之前也看到有些文章使用这种 ...
- Android(java)学习笔记259:JNI之NDK开发步骤
1. NDK开发步骤(回忆一下HelloWorld案例): (1)创建工程 (2)定义native方法 (3)创建jni文件夹 (4)创建c源文件放到jni文件夹 (5)拷贝jni.h头文件到jni目 ...
- mount, findmnt,df命令
■ The mount command gives an overview of all mounted devices. To get this information, the /pro ...
- 在公网(internet)上建立website时不能用http访问
我们在internet的IDC提供的虚拟机上建了新的web site, 域名也从阿里巴巴那里得到二级域名,也经过映射到了虚机的IP, 在本机都可以用域名以Http方式访问,但在internet上的其它 ...
- WindowsServer2012 取消密码策略
1.打开“组策略管理”界面:管理工具 >> 组策略管理,如果找不到该功能,则需要先安装,在“服务管理器”里面“添加新功能”.(或者:开始——运行——gpmc.msc) 2.依次打开“林”& ...
- JavaScript 之 使用 XMLHttpRequest 预览文件(图片)
<div id="div1"> <input type="file" id="uploadfile" style=&quo ...