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北京奥运会上,会将数独列为 ...
随机推荐
- 13.mariadb-rhce考试解题思路
1.安装mariadb ①yum install -y mariadb mariadb-server 或者 yum groupinstall -y mariadb 2.备份和还原数据库 ①备份:mys ...
- WCF 服务与终结点(四)
服务 服务是一组公开功能的集合. 服务内部包含了如语言.技术.版本与框架等概念,服务之间的交互只允许使用规定的通信模式 外界客户端并不知道服务内部的实现细节,所以WCF服务通常通过元数据的方式描述可用 ...
- 【Qt】Qt之自定义界面(添加自定义标题栏)【转】
简述 通过上节内容,我们实现了自定义窗体的移动,但是我们缺少一个标题栏来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭的按钮. 自定义标题栏后,所有的控件我们都可以定制,比如:在标题栏中添加换 ...
- 【原】去掉UltraGrid第三方控件中的Drag a column header here to group by that column
- Oracle内存管理理论篇二
目标 了解oracle内存管理方式 掌握ASMM管理方式 掌握AMM管理方式 监控内存使用 学习一个知识点时,最好先了解其历史.ORACLE近期的版本都对内存管理做了简化,从9i通过PGA_AGGRE ...
- SQLserver通过链接服务器连接oracle
在SQLserver中一直使用的是DTS抽取数据,但是DTS微软只支持到2008,到了2012后就没有这个工具了,现在需要在SQLserver跟Oracle中间建立一个通道,借助这个通道,将Oracl ...
- CentOS 6.3 配置 yum
ContOS 配置yum:1.cd /etc/yum.repos.d2.创建个任意目录,将所有文件移动到创建的目录中,除了CentOS-Media.repo3.编辑CentOS-Media.repov ...
- thinkphp通行证服务,验证登录,注销登录
<?php /** * 通行证服务 */ class PassportService extends Service { /** * 验证用户或者管理员是否已登录 * @return boole ...
- NP完全问题
1.概念 好算法:Edmonds与1975年提出:具有多项式时间(O(nk)的算法为好算法. P类问题:存在多项式时间算法的问题.如:货郎问题.调度问题.最大团问题.最大独立集问题.Steiner树问 ...
- php将数据库导出成excel的方法
<?php $fname = $_FILES['MyFile']['name']; $do = copy($_FILES['MyFile']['tmp_name'],$fname); if ($ ...