蒜头君今天突然开始还念童年了,想回忆回忆童年。他记得自己小时候,有一个很火的游戏叫做数独。便开始来了一局紧张而又刺激的高阶数独。蒜头君做完发现没有正解,不知道对不对? 不知道聪明的你能否给出一个标准答案?

标准数独是由一个给与了提示数字的 9×99 \times 99×9 网格组成,我们只需将其空格填上数字,使得每一行,每一列以及每一个 3×33 \times 33×3 宫都没有重复的数字出现。

膜拜大佬,自己真写不出来。。。

用结构体去保存输入中的空白(0),真精明,化成一维的。涨姿势了。

#include<bits/stdc++.h>
using namespace std;
int a[10][10];
int b[10][10];
int ha[10][10],lie[10][10];
typedef pair<int ,int> pii;
pii P[100];
int ok=0,s=0;
bool check(int x,int o)
{pii p=P[x];int m=(p.first-1)/3*3;int n=(p.second-1)/3*3;for(int i=m+1;i<=m+3;i++){for(int j=n+1;j<=n+3;j++){if(a[i][j]==o)return false;}}return true;
}
void dfs(int x)
{if(ok==1)return;if(x==s){ok=1;for(int i=1;i<10;i++){for(int j=1;j<10;j++)printf("%d ",a[i][j]);printf("\n");}return;}pii p=P[x];for(int i=1;i<=9;i++){if(!ha[p.first][i]&&!lie[p.second][i]&&check(x,i)){ha[p.first][i]=1;lie[p.second][i]=1;a[p.first][p.second]=i;dfs(x+1);ha[p.first][i]=0;lie[p.second][i]=0;a[p.first][p.second]=0;}}
}
int main()
{for(int i=1;i<=9;i++){for(int j=1;j<=9;j++){scanf("%d",&a[i][j]);if(a[i][j]!=0){ha[i][a[i][j]]=1;lie[j][a[i][j]]=1;}else{P[s].first=i;P[s++].second=j;}}}dfs(0);return 0;} 

9*9的数独(dfs)相关推荐

  1. 数独(DFS优化练习)

    描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个3*3宫内的数字均含1-9,不重复. 每一道合格的数独谜题都有且 ...

  2. 洛谷 P1784 数独 dfs

    题目描述 数独是根据 9×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含 1 - 9 ,不重复.每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为 ...

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

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

  4. TOJ 3287 Sudoku 9*9数独 dfs

    描述 Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller sq ...

  5. codevs1174 靶形数独 dfs+剪枝

    题目描述 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教, Z ...

  6. 数独 dfs 剪枝 位运算 保姆注释版 java

  7. 集合篇10.华为机试(涮题记录2)

    华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...

  8. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  9. HDU 1426 Sudoku Killer【DFS 数独】

    自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视.  据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品 ...

  10. 【位运算DFS/DLX】【HDU1426】【数独】

    题意:标准的一道数独题 DFS做法: 将横纵九宫格里的数字用位运算状态压缩,且可以通过逻辑或来确定总共有哪些数字被选择了,很方便也很快,代码如下 #include <cstdio> #in ...

最新文章

  1. agpl限制了开源_不要限制您的开源项目的潜力
  2. [react] 说说你是怎么理解react的业务组件和技术组件的?
  3. javascript数组总结
  4. sun8134的Blog
  5. PYSQLITE用法初探
  6. WinHex V14.6 SR-2 注册码
  7. 3-20模拟赛【果冻之王】题解
  8. 为国内软件质量呐喊:《2021年国内质量调查报告》发布
  9. 超弦计算机,物理学四大神兽——拉普拉斯妖
  10. 编译原理 C-Minus 语法分析(Flex / Bison)
  11. it职业生涯_如何通过这些有用的网站提升您的自由职业生涯
  12. 温控驱动(五)dts参数解析、节点作用
  13. nginx防恶意刷新
  14. HTTP协议格式(请求格式、响应格式)
  15. Crossplane 和 Terraform 的区别
  16. 计算机类专业知识pdf,事业单位计算机专业知识整理(全)(20210324075052).pdf
  17. 如何通过互联网赚钱?
  18. 关于文案、营销、生活的15条思考!
  19. Verilog实现序列信号发生器
  20. 穷到低谷时的创业时间表

热门文章

  1. java基于ssh的旅游系统
  2. 攻防世界逆向入门题之open-source
  3. java告警_错误日志告警实战
  4. Prometheus告警规则
  5. 安卓应用发布在各大应用市场方法整理
  6. 正态分布随机数 C语言,正态分布随机数生成算法
  7. 内存管理中的 RSS 和 VSZ意思
  8. 登录页面渗透测试思路与总结
  9. python运动学仿真的意义_运动学仿真和动力学仿真有什么区别和联系?
  10. edge打开pdf不显示印章_一旦碰到Edge浏览器打不开pdf文件,只需这样做就可完美解决!...