深搜+回溯 POJ 2676 Sudoku
POJ 2676 Sudoku
Time Limit: 2000MS | Memory Limit: 65536K | |||
Total Submissions: 17627 | Accepted: 8538 | Special Judge |
Description

Input
Output
Sample Input
- 1
- 103000509
- 002109400
- 000704000
- 300502006
- 060000050
- 700803004
- 000401000
- 009205800
- 804000107
Sample Output
- 143628579
- 572139468
- 986754231
- 391542786
- 468917352
- 725863914
- 237481695
- 619275843
- 854396127
我的思路错误之处:我本来只设置了两个二维bool数组表示每行9个数字和每列9个数字,是否用过,再深搜填写9个方格,可是发现,深搜填写每个方格是很难写的。
正解:开是三个二维bool数组,分别表示每列每行每个大方格的数字的使用情况。
读入时注意数字是连起来的。
- /*----------------正确代码-------------------------*/
- #include<iostream>
- using namespace std;
- #include<cstdio>
- #include<cstring>
- #define N 15
- char duru[N];
- int jz[N][N];
- bool flag=false,flagfg[N][N],flaghang[N][N],flaglie[N][N];
- inline void input()
- {
- for(int i=;i<=;++i)
- {
- scanf("%s",duru+);/*注意读入的数字之间没有空格*/
- for(int j=;j<=;++j)
- {
- jz[i][j]=duru[j]-'';
- if(jz[i][j]==) continue;
- int k=*((i-)/)+(j-)/+;
- flagfg[k][jz[i][j]]=true;
- flaghang[i][jz[i][j]]=true;
- flaglie[j][jz[i][j]]=true;
- }
- }
- }
- void output()
- {
- for(int i=;i<=;++i)
- {
- for(int j=;j<=;++j)
- printf("%d",jz[i][j]);
- printf("\n");
- }
- }
- void dfs(int x,int y)
- {
- if(x==)
- {
- flag=true;
- return;
- }
- if(jz[x][y])
- {
- if(y==)
- dfs(x+,);
- else dfs(x,y+);
- if(flag) return;
- }
- else {
- int k=*((x-)/)+(y-)/+;
- for(int i=;i<=;++i)
- {
- if(!flaghang[x][i]&&!flaglie[y][i]&&!flagfg[k][i])
- {/*枚举符合三个条件的i*/
- jz[x][y]=i;
- flaghang[x][i]=true;
- flaglie[y][i]=true;
- flagfg[k][i]=true;
- if(y==)
- dfs(x+,);
- else dfs(x,y+);
- if(flag) return;
- jz[x][y]=;/*回溯*/
- flaghang[x][i]=false;
- flaglie[y][i]=false;
- flagfg[k][i]=false;
- }
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--)
- {
- input();
- dfs(,);
- output();
- memset(jz,,sizeof(jz));
- memset(flagfg,false,sizeof(flagfg));
- memset(flaghang,false,sizeof(flaghang));
- memset(flaglie,false,sizeof(flaglie));
- flag=false;
- }
- return ;
- }
深搜+回溯 POJ 2676 Sudoku的更多相关文章
- HDU5723 Abandoned country (最小生成树+深搜回溯法)
Description An abandoned country has n(n≤100000) villages which are numbered from 1 to n. Since aban ...
- ****Curling 2.0(深搜+回溯)
Curling 2.0 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- ACM : POJ 2676 SudoKu DFS - 数独
SudoKu Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu POJ 2676 Descr ...
- The 2016 ACM-ICPC Asia China-Final L World Cup(深搜+回溯 暴力求解)
题目分析: 对于A,B,C,D四支队伍,两两之间进行一场比赛,获胜得3分,平局得1分,失败不得分,现在对给出的四个队伍的得分,判断能否满足得到这种分数,且方案唯一输出yes,不唯一输出no,不可能则输 ...
- UVA 165 Stamps (DFS深搜回溯)
Stamps The government of Nova Mareterrania requires that various legal documents have stamps attac ...
- POJ 2676 Sudoku(深搜)
Sudoku Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total Submi ...
- 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 ...
- POJ 2488 A Knight's Journey(深搜+回溯)
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- 搜索 --- 数独求解 POJ 2676 Sudoku
Sudoku Problem's Link: http://poj.org/problem?id=2676 Mean: 略 analyse: 记录所有空位置,判断当前空位置是否可以填某个数,然后直 ...
随机推荐
- web ppt
先记录,以后再试试 https://github.com/gnab/remark/wiki http://segmentfault.com/blog/sweetdum/1190000000484121 ...
- 邻接矩阵c源码(构造邻接矩阵,深度优先遍历,广度优先遍历,最小生成树prim,kruskal算法)
matrix.c #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include < ...
- mongodb学习5--mongo的type类型
db.active.group({key:{id:1},cond:{cd:20160913,cid:"fgsdljsdv",aid:"54465"},reduc ...
- Hibernate的缓存技术详解
转载注明出处:http://www.cnblogs.com/xiaoming0601/p/5882980.html 一.什么是缓存: 并不是指计算机的内存或者CPU的一二级缓存:缓存是指为了降低应用程 ...
- jQuery中的事件冒泡
1.什么是冒泡 eg: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he ...
- 类库LinqToExcel的介绍
LinqToExcel是一个.net framework平台下开源项目,它主要实现了LINQ的语法查询Excel电子表格.类型之前的LINQToXXX如果你是LINQ语法糖爱好者那最适 ...
- NLog在.NET Core Console Apps中的简单应用
什么是NLog? NLog is a free logging platform for .NET with rich log routing and management capabilities. ...
- 硅谷新闻1--引导界面GuideActivity
1.红点切换间距 RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) iv_red_point.getLayoutPa ...
- SharpGL学习笔记(十二) 光源例子:解决光源场景中的常见问题
笔者学到光源这一节,遇到的问题就比较多了,收集了一些如下所述: (1) 导入的3ds模型,如果没有材质光照效果很奇怪.如下图 (2) 导入的3ds模型,有材质,灯光效果发暗,材质偏色,效果也很奇怪. ...
- 【GOF23设计模式】命令模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_命令模式.数据库事务机制底层架构实现.撤销和回复 package com.test.command; public cla ...