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

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

输入格式

一个9×9的数独,数字之间用空格隔开。*表示需要填写的数字。

输出格式

输出一个9×9的数独,把出入中的*替换成需要填写的数字即可。

本题答案不唯一,符合要求的答案均正确

样例输入

*   * * * * * *
* * * * * *
* * * * * * *
* * * * *
* * * * * * *
* * * * *
* * * * * * *
* * * * * *
* * * * * * *

样例输出


这道题目类似八皇后问题,只不过八皇后是对每一行进行 1-8 的尝试,而这道题目是对每个空进行 1-9 的尝试。而且这道题目搜索到一种可行解就可以结束了。

标记方法为标记某行某个数字是否出现,标记某列某个数字是否出现,标记某个小方格某个数字是否出现。

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <sstream>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const double PI = acos(-);
const double eps =1e-;
#define Bug cout<<"---------------------"<<endl
const int maxn=1e5+;
using namespace std; char G[][];
int cnt[]={,,,,,,,,,};//每个数字剩多少个
int flag;//是否找到答案 void PT()//输出答案
{
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
if(j==) printf("%c",G[i][j]);
else printf(" %c",G[i][j]);
}
printf("\n");
}
flag=;
} int judge(int x,int y,int num)//判断是否可以在G[x][y]处填入num
{
for(int i=;i<;i++)
{
if(G[x][i]==''+num||G[i][y]==''+num)
return ;
}
for(int i=x/*;i<x/*+;i++)
{
for(int j=y/*;j<y/*+;j++)
{
if(G[i][j]==''+num)
return ;
}
}
return ;
} void DFS(int x,int y) //一层一层搜索
{
if(x==&&y==)
{
if(flag==) PT();
return;
}
if(G[x][y]=='*')
{
for(int i=;i<=;i++)
{
if(judge(x,y,i)&&cnt[i])
{
G[x][y]=''+i; cnt[i]--;
if(y==) DFS(x+,);
else DFS(x,y+);
if(flag) return ;
G[x][y]='*'; cnt[i]++;
}
}
}
else
{
if(y==) DFS(x+,);
else DFS(x,y+);
}
return ;
} int main()
{
#ifdef DEBUG
freopen("sample.txt","r",stdin);
#endif
ios_base::sync_with_stdio(false);
cin.tie(NULL); for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
scanf("%c",&G[i][j]);
getchar();
if(G[i][j]>=''&&G[i][j]<='')
cnt[G[i][j]-'']--;
}
}
DFS(,); return ;
}

-

计蒜客 数独(DFS)的更多相关文章

  1. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  2. 计蒜客 踏青 dfs

    题目: https://www.jisuanke.com/course/2291/182234 思路: 紫书P163联通块问题. 1.遍历所有块,找到草地,判断合法性,合法其id值加一,最后加出来的i ...

  3. 计蒜客-A1139 dfs

    在一个 n \times mn×m 的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上 ...

  4. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  5. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  6. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  7. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  8. [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】

    Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...

  9. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

随机推荐

  1. springboot#interceptor

    _ 拦截器相对与过滤器Filter 而言,拦截器是spring中的概念.过滤器是servlet中的概念.在spring中肯定是优先使用拦截器Interceptor的. public class My1 ...

  2. nodejs学习笔记(一):centos7安装node环境

    由于windows环境安装nodejs只需要访问官方网站下载压缩包,解压即可. 首先检查自己是否安装==wget==,已安装可以跳过这步,未安装则需要先安装: linux yum install -y ...

  3. Flink on yarn以及实现jobManager 高可用(HA)

    on yarn https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/deployment/yarn_setup.html f ...

  4. 实验吧-杂项-你没有见过的加密!(php srand()和rand()函数)

    什么垃圾东西,弄半天,Windows上运行乱码,linux上7.3的php运行也是乱码(气死). 下载文件,查看内容 <?php function encrypt($str) { $crypte ...

  5. Selenium2Library:Get Matching Xpath Count用法

    Name:Get Matching Xpath CountSource:Selenium2Library <test library>Arguments:[ xpath ]Returns ...

  6. Java compare方法和compareTo方法

    Java Comparator接口排序用法,详细介绍可以阅读这个链接的内容:https://www.cnblogs.com/shizhijie/p/7657049.html 对于 public int ...

  7. tensorflow-cnnn-mnist

    #coding=utf-8import tensorflow as tfimport numpy as npimport matplotlib .pyplot as pltfrom tensorflo ...

  8. 不得了的try catch

    try catch:几乎所有语言都有这个语句 try { //可能会导致错误的代码 } catch (error) { //在错误发生时怎么处理 }finally { //即使报错始终执行 } 1. ...

  9. 十一、CI框架之输出用户IP地址

    一.代码如下: 二.效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.

  10. 201771010123汪慧和《面向对象程序设计Java》第十二周实验总结

    一.理论部分 1.在Java提供的GUI构建工具中可以分为组件和容器两类. 2.在Java中的组件有:按钮.标签.复选框.单选按钮.选择框.列表框.文本框.滚动条.画布.菜单. 3.在Java中的容器 ...