思路:记录每行每列每一个宫已经出现的数字就可以。数据比較弱

另外POJ 3074 3076 必须用剪枝策略。但实现较麻烦,还是以后学了DLX再来做吧

//Accepted  160K    0MS
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N =15;
char sudo[N][N];
bool visr[N][N],visc[N][N],visg[N][N];
int pos[N][N];
bool flag;
void print()
{for(int i=1;i<=9;i++)printf("%s\n",sudo[i]+1);
}
void dfs(int x,int y)
{if(y==10){dfs(x+1,1);return ;}if(x==10){print();flag=1;return ;}if(sudo[x][y]!='0'){dfs(x,y+1);return ;}for(int i=1;i<=9&&!flag;i++){if(visr[x][i]==0&&visc[y][i]==0&&visg[pos[x][y]][i]==0){sudo[x][y]='0'+i;visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=1;dfs(x,y+1);sudo[x][y]='0';visc[y][i]=visr[x][i]=visg[pos[x][y]][i]=0;}}
}
void ini()
{flag = false ;memset(visr,0,sizeof(visr));memset(visc,0,sizeof(visc));memset(visg,0,sizeof(visg));
}
int main()
{for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)pos[i][j]=((j-1)/3+1)+3*((i-1)/3);int T;scanf("%d",&T);for(int cas=1;cas<=T;cas++){printf("Scenario #%d:\n",cas);ini();for(int i=1;i<=9;i++)scanf("%s",sudo[i]+1);for(int i=1;i<=9;i++)for(int j=1;j<=9;j++){int val=sudo[i][j]-'0';visr[i][val]=true;visc[j][val]=true;visg[pos[i][j]][val]=true;}dfs(1,1);puts("");}return 0;
}

转载于:https://www.cnblogs.com/bhlsheji/p/5137909.html

POJ 2676/2918 数独(dfs)相关推荐

  1. POJ 2676 Sudoku 数独

    点击打开链接 Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12360   Accepted: 6168   ...

  2. POJ 2676 Sudoku【DancingLinks,数独】

    http://poj.org/problem?id=2676 POJ 2676 Sudoku 也是求解规模为9*9的数独问题,与POJ 3074 Sudoku相同的问题,只是修改了输入输出格式而已.. ...

  3. POJ 2676 Sudoku (数独求解器 DFS)

    题目链接 POJ2676 题目大意 输入n个数独,空格用0表示,填数独(符合的一种方案即可). 分析 类似于八皇后的简单搜索题,用DFS回溯法求解. 将空格的位置都记录下来,1个1个填下去,填不下去就 ...

  4. 【POJ - 2676】Sudoku (经典深搜,dfs数独)

    题干: Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller s ...

  5. POJ - 2676 Sudoku(dfs)

    题目链接:点击查看 题目大意:解数独,具体规则是,在一个9*9的区域内填充1~9的数字,要求: 每列不许有重复数字 每行不许有重复数字 每个3*3的九宫格内不许有重复数字 题目分析:因为至多只有81个 ...

  6. Poj 2676 Sudoku[dfs]

    题目大意: 九宫格问题,也有人叫数独问题 把一个9行9列的网格,再细分为9个3*3的子网格,要求每行.每列.每个子网格内都只能使用一次1~9中的一个数字,即每行.每列.每个子网格内都不允许出现相同的数 ...

  7. POJ-2676 Sudoku(简单数独-dfs深搜)

    Sudoku Time Limit: 2000MS Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudoku ...

  8. POJ 1190 生日蛋糕 【DFS + 极限剪枝】

    题目传送门:http://poj.org/problem?id=1190 参考剪枝:https://blog.csdn.net/nvfumayx/article/details/6653111 生日蛋 ...

  9. poj 2034 Anti-prime Sequences(dfs)

    http://poj.org/problem?id=2034 大致题意:给出区间[n,m],对这个区间的数进行排列使得相邻的2个.3个......d个数之和都不是素数.输出字典序最小的. 思路:裸的d ...

最新文章

  1. ubuntu pip 安装
  2. 硬链接与软链接的区别
  3. 842. Split Array into Fibonacci Sequence
  4. Android实现飘动的旗帜效果实例
  5. java 序列化异常_关于spring:Java序列化异常消息
  6. 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
  7. Java多线程知识点整理(Lock锁)
  8. 自学python考哪些证书-自学Python半年的姑娘告诉我,她这半年只值8元
  9. Spring MVC中ModelAndView
  10. 基于模拟退火算法解决TSP问题 | MATLAB源码
  11. winform中notifyIcon的ShowBalloonTip方法的坑
  12. FLV转MPG和转成其它格式的转码方法
  13. 6种摆脱百度竞价恶意点击的技巧
  14. docker run 的 -i -t -d参数
  15. C# WinForm 使用SMTP协议发送QQ邮箱验证码
  16. 你所厌恶的正是别人渴望的
  17. SWE_Browser编译
  18. C语言学生管理系统项目
  19. 【Photoshop JSX脚本】强大的事件监听器脚本 - event_listener.jsx
  20. 将Intel集成显卡GMA HD4000驱动安装到FreeBSD-9.2系统

热门文章

  1. unicode 字符串转成 TDesC-转贴
  2. 共享两个做项目最常用功能操作的封装类
  3. configurablebeanfactory
  4. Laravel 中的 视图和模型
  5. ES6-17 class与对象
  6. Python-爬虫-requests
  7. oracle常用的工具软件
  8. 第八讲:tapestry组件
  9. asp.net ajax1.0基础回顾(七):综合应用
  10. 批处理获取exe返回结果