hdu 1426 Sudoku Killer
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1426
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
char map[][];
bool row[][],list[][];
int pos[*][];
int k; int check(int v,int num)//第V个?上替换num值
{
int n,m;
if(pos[v][]>= && pos[v][]<=)
n=;
if(pos[v][]>= && pos[v][]<=)
n=;
if(pos[v][]>= && pos[v][]<=)
n=;
if(pos[v][]>= && pos[v][]<=)
m=;
if(pos[v][]>= && pos[v][]<=)
m=;
if(pos[v][]>= && pos[v][]<=)
m=;
for(int i=n;i<n+;i++)
{
for(int j=m;j<m+;j++)
{
if(map[i][j] == num+'')
return ;
}
}
return ;
}
int dfs(int v)//从第0个?开始查找
{
int i;
if(v==k)//如果全部找到返回1
return ;
for(i=;i<=;i++)
{
if(!row[pos[v][]][i] && !list[pos[v][]][i] && check(v,i))//判断同行、同列和九宫格
{
row[pos[v][]][i]=true;
list[pos[v][]][i]=true;
map[pos[v][]][pos[v][]]=i+'';
if(dfs(v+))
return ;
row[pos[v][]][i]=false;
list[pos[v][]][i]=false;
map[pos[v][]][pos[v][]]='?';
}
}
return ;
}
void Output()
{
for(int i=;i<=;i++)
{
printf("%c",map[i][]);
for(int j=;j<=;j++)
{
printf(" %c",map[i][j]);
}
printf("\n");
}
return ;
} int main()
{
int sum=;//格式问题
//freopen("in.txt","r",stdin);
while()
{
memset(row,false,sizeof(row));
memset(list,false,sizeof(list));
k=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
if(!(cin >> map[i][j]))
exit();
if(map[i][j]=='?')
{
pos[k][]=i;//记录?的x和y
pos[k++][]=j;
continue;
}
row[i][map[i][j]-'']=true;//记录同行出现的数
list[j][map[i][j]-'']=true;//记录同列出现的数
}
}
dfs();
//printf("%d\n",k);
if(sum++)
printf("\n");
Output(); }
return ;
}
hdu 1426 Sudoku Killer的更多相关文章
- HDU 1426 Sudoku Killer(dfs 解数独)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1426 Sudoku Killer Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1426:Sudoku Killer(DFS深搜,进阶题目,求数独的解)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1426 Sudoku Killer (dfs)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1426 Sudoku Killer(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 题意很明确,让你解一个9*9的数独. DFS即可. #include <cstdio> ...
- HDU 1426 Sudoku Killer【DFS 数独】
自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品— ...
- hdu 1426 Sudoku Killer ( Dancing Link 精确覆盖 )
利用 Dancing Link 来解数独 详细的能够看 lrj 的训练指南 和 < Dancing Links 在搜索中的应用 >这篇论文 Dancing Link 来求解数独 , ...
- HDU 1426 Sudoku Killer (回溯 + 剪枝)
本文链接:http://i.cnblogs.com/EditPosts.aspx?postid=5398818 题意: 给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开.其中1-9代表该位 ...
- HUD 1426 Sudoku Killer (DFS)
链接 : Here! 思路 : 记录下所有 "?" , 出现的位置, 然后 $DFS$ 一下, 对于每个位置来说都可以填充 $9$ 种数值, 然后对于判断填充是否合法需要三个标记数 ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
随机推荐
- 《mysql数据库备份小脚本》
vim mysql.sh #!/bin/bashDAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量SIZE=`du -sh /var/lib/mysql //查看mysql ...
- Oracle11g数据库安装
一.安装流程截图(没截图部分都默认) 服务器如果不是单独的数据库服务器,内存分配大概1/4即可. 二.安装后,表空间,以及创建账号脚本 sqlplus / as sysdba 登陆数据库,执行 /*第 ...
- nodejs ssh2
https://www.npmjs.com/package/ssh2 npm install ssh2 ssh2文件下载: //前台命令下发 app.get('/test/fileDownload' ...
- nginx自启动脚本
#!/bin/bash # #Startup script for Nginx - this script starts and stops the nginx daemon # # chkconfi ...
- mysql主从备份、主从切换的例子
指定binlog(因为时通过binlog实现数据同步的) 配置完后重启数据库服务,用show master status可以看到Master信息. StepB: 在SerB的my.cnf中指定 [ht ...
- jeecms获取栏目标题图
[@cms_channel id='1'] <img src="${tag_bean.titleImg!site.typeImg}" /> [/@cms_channel ...
- 【Web学习日记】——在IIS上发布一个WebService
没有开发过程,只是发布过程 一.前提 开发使用的是VS2013 从来没有做过Web的发布,在网上找例子,看到的总是与自己的情况不相符,而且也有人提出了VS2013发布网站的问题,但解决方案却很少,好不 ...
- Teradata 的rank() 和 row_number() 函数
Teradata数据库中也有和oracle类似的分析函数,功能基本一样.示例如下: RANK() 函数 SELECT * FROM salestbl ORDER BY 1,2; storeid p ...
- XenServer安装虚拟机---先扩容存放ISO镜像文件
我们都知道xenserver安装后,不管你的盘有多大,只有4G的空间. 故操作是:新建LV卷,可自定义大小 1.vgdisplay #先查看剩余空间 [root@XenServer /]# vgdis ...
- [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2 using System; using Sys ...