10117 : 数独游戏

数独问题的解决办法 数独(すうどく,Sūdoku),是源自18世纪瑞士发明,流传到美国,再由日本发扬光大的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。 上机笔试题目描述如下: 数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个 阅读详情

问题描述
数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。
数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。
给你这样一个九宫格,你能求出这个数独的解么?保证数独有唯一解
输入格式
输入一个输入,每个数字表示对应位置的值,0表示该位置还为填数字。
输出格式
输入数独的解,格式如样例所示,行末无空格.
样例输入
000000000
002301000
000000076
900680000
000000400
001000200
000002104
000070000
600090000
样例输出
598746312
762351948
143829576
925684731
376215489
481937265
837562194
219478653
654193827
原题君~~~

#include <cstdio>

using namespace std;

struct NODE{
    int x, y;
}b[85]; 
int a[10][10];//存储数独 
int ling;//零的个数 
int flag=0;//见dfs中作用 
bool ma[10][10],mb[10][10],mc[10][10];//标记行列宫是否可填某数(空间换时间) 
bool check (int x, int y, int s)
{
    if (ma[x][s]==0&&mb[y][s]==0&&mc[(x-1)/3*3+(y+2)/3][s]==0) 
        return 1;//若横行数列宫格都满足填入的条件则填入
    return 0;//否则不能填 
}//判断坐标(x,y)是否可以填入s这个值 
void dfs (int cnt)
{
    if (cnt == ling+1)
    {
        flag=1;//由于输入保证有且只有一组解,所以找到后可直接返回。
        return;//flag=1表示找到正解,以保证连续返回,不再浪费时间。 
    }//判断条件,若已经填入了所有需填的数,则说明找到了一组正解,返回 
    int x = b[cnt].x;
    int y = b[cnt].y;//坐标的赋值 
    for (int i = 1; i <= 9; i++)//for循环尝试所有可能 
        if (check (x, y, i)==true)
        {
            a[x][y] = i;
            ma[x][i]=1;
            mb[y][i]=1;
            mc[(x-1)/3*3+(y+2)/3][i]=1;//临时认为(x,y)填i 
            dfs (cnt+1);//向下一层搜 
            if(flag) return;//上述flag连续返回的执行 
            a[x][y] = 0;
            ma[x][i]=0;
            mb[y][i]=0;
            mc[(x-1)/3*3+(y+2)/3][i]=0;//返回后发现(x,y)不能填i,取消之前的标记 
        }
}
int main()
{
    for (int i = 1; i <= 9; i++)
        for (int o = 1; o <= 9; o++)
        {
            scanf ("%1d", &a[i][o]);//这样可以做到一位一位读入 
            if (a[i][o]==0)//若这个位置为0 
            {
                ling++;//ling统计需要填入数的格子的数目 
                b[ling].x=i;
                b[ling].y=o;//b数组存储需要搜索的格子的坐标,所以用到了结构体 
            }
            else//否则(即这个位置有确定的值) 
            {
                ma[i][a[i][o]]=1;//标记横行不能填哪些数 
                mb[o][a[i][o]]=1;//标记纵列不能填哪些数 
                mc[(i-1)/3*3+(o+2)/3][a[i][o]]=1;//标记宫格不能填哪些数 
            }
        }//输入 
    dfs (1);//开始搜索! 
    for (int i = 1; i <= 9; i++)
    {
        for (int o = 1; o <= 9; o++)
            printf ("%d", a[i][o]);
        printf ("\n");
    }
    return 0; 
    ********~~~~~~********
}
ZZULIOJ:1395: 数独 题目描述 数独(すうどく,Sudoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列内的数字均含1-9,不重复。 小明很喜欢玩数独这个游戏,但是又觉得每次去检查数独是否合法很麻烦。所以他希望大家帮他写一个判断数独的程序。 输入 首先输入一个整数T,表示接下来有T个测试实例。 每个实例是一个9*9的数阵,在这个数阵中包含1~9... 阅读详情

相关推荐

js数独游戏

一个纯js做的游戏,数独,有一些自己实现的特殊功能,比如一个对比模式(直接生成一个终盘放在一边和现有的对比) 全注释

ybtoj DFS 1 拔河比赛 数独游戏 虫食算

ybtoj 深搜例题 做爆搜题果然要挑一个心情平和、大贤者状态下的午后

fervency(洛谷id)的博客 435

数独游戏数据文件,可随意编辑

大数据分析、运维。 在集群节点中/usr/hdp/2.4.3.0-227/hadoop-mapreduce/目录下,存在一个案例JAR包hadoop-mapreduce-examples.jar。运行JAR包中的sudoku程序来计算下表中数独运算题的结果。

【Ybtoj 第4章 例题2】数独游戏【深搜】

解题思路 这道题用搜索实现。 我们可以用三个数组 来标记行,列和九宫格里数字有没有填过。 然后模拟数字填写过程,把一到九全部考虑一次。 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int a[10][10],kj[10][10],lyx[10][10],bf[10][10][10]; bool flag;...

在人间贩卖声音 248

数独小游戏

JAVA编辑的数独小游戏,分享一下,用eclipse软件可以直接运行

一个简单的数独游戏源码

一个简单的而数独游戏,可以自己生成数独题目,有GUI界面,炒鸡可爱,页面包含菜单,进度栏,可以实现一些简单的操作。

小米OJ 54(数独游戏)

数独游戏 序号:#54 难度:一般 时间限制:1000ms 内存限制:10M 描述 数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字...

努力当学神的博客 1135

OCEAN 电路仿真

介绍利用 Cadence OCEAN 进行电路脚本仿真的方法

weixin_43249158的博客 4402

华为OJ(数独游戏-Sudoku)

描述 问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个粗线宫内的数字均含1-9,并且不重复。输入:包含已知数字的9X9盘面数组[空缺位以数字0表示]输出:完整的9X9盘面数组 知识点 查找,搜索,排序 运行时间限制 10M 内存限制

yiqiwangxi的专栏 3305

虎符+红明谷+ctfshow渔人杯赛后复现

目录标题虎符CTFWeb-签到MISC-你会日志分析吗红明谷CTFWeb-write_shellMISC-我的心是冰冰的ctfshow渔人杯签到抽奖感受下气氛神仙姐姐阿拉丁迷飘啊飘简单二维码我跟你拼了 虎符CTF Web-签到 参考详细分析PHP源代码后门事件及其供应链安全启示 根据文章提示,添加恶意请求头 User-Agentt: zerodiumphpinfo(); 可以看到phpinfo内容 继续构造,查看根目录下的文件 User-Agentt: zerodiumsystem('ls /');

Atkx's Blog 1984

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 327

K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

🔴 K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

1005. 数独

题目描述 数独游戏,具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9, 位置不限, 每一列都用到1,2,3,4,5,6,7,8,9, 位置不限, 每3*3的格子(共9个这样的格子)都用到1,2,3,4,5,6,7,8,9, 位置不限, 游戏过程就是用1,2,3,4,5,6,7,8,9填充空白,并满足每行,每列,每个九宫格都用到1,2,3,4,5,6,7,8,9, ...

weixin_30762087的博客 304

环保 HJ212协议解析

由于是做环保相关的,有时需要对212协议进行拆包和解包。HJ212协议是一种字符串协议,数据传输通讯包主要由包头、数据段长度、数据段、CRC校验、包尾组成,其中“数据段”内容包括请求编码、系统编码、命令编码、密码、设备唯一标识、总包数、包号、指令参数。请求编码为请求的时间戳,系统编码ST统一规定为22,命令编码CN为该数据包的时间类型,访问密码、设备唯一标识在对接时由平台提供,指令参数为数据内容。通讯协议的数据结构如图4所示。 图4 通讯协议的数据结构 6.1.1通讯包结构组成 名称 类型 长度

ccf19881030的专栏 2万+

YOLOv11改进策略【Neck】| 适用关键点检测:PSFM,深层语义融合模块 引入深层与浅层交叉注意力机制,动态建模不同层级的全局语义依赖关系

本文记录的是利用PSFM 模块改进 YOLOv11 的颈部融合部分,专门用于关键点检测。PSFM模块(Profound Semantic Fusion Module,深层语义融合模块) 通过在特征提取网络的深层引入跨模态交叉注意力机制,动态建模红外与可见光特征的全局语义依赖关系。本文将其应用到的颈部部分,融合深层与浅层特征,捕捉长距离语义关联,增强融合特征的判别性与场景理解能力,为检测头提供包含全局上下文的高层语义表示,从而提升模型在复杂场景下的目标检测准确率与语义推理鲁棒性。Rethinking the

Limiiiing的博客 650

华为OJ-数独(C语言、递归)

#include<stdio.h> int num[9][9]; int flag = 0; int check(int x, int y, int m) { for(int i = 0; i < 9; i++) //检查行同一行有没有这个数字 { if(num[x][i] == m && i != y) return 0; // 这个数已经存在 } for(int i = 0; i &l.

hwruirui的博客 500

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4025

【数独】你一定听说过“数独”游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复

题目: 你一定听说过“数独”游戏。 玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。 数独的答案都是唯一的,所以,多个解也称为无解。 本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。 本题的要求就是输入数独题目,程序输出数独的唯一解。我们保证所有已知数据的格...

风行骓Lie的博客 7627

创建 Fiori Space 时看不到传输请求的根因与排查路径

摘要: 在创建Fiori Space时,若Transport字段下拉列表为空,通常是因为系统未找到符合要求的传输请求。主要原因是: 请求类型不匹配:需使用Customizing request而非Workbench request。 用户权限问题:当前用户需在请求下有可用的task。 客户端或系统不一致:请求需在当前客户端和正确系统(如后端)中创建。 解决方法: 在当前客户端和系统中新建Customizing request,确保包含用户task。 检查是否为前后端分离架构,确保请求创建在正确的系统。 验证

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 107

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于数独游戏的实现(一)

1)Github项目网址:https://github.com/1120161970/sudoku2)PSP表格:3)解题思路:首先,生成数独最简单想到的方法就是BFS爆搜就行了,然后优化的话加一些判断和多线程应该可以。至于结构之类的,先去网上看看其他大佬的方法,然后学习一下使用。...

zj98929的博客 2138

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【YBTOJ】数独游戏

思路: 这道题用搜索 我们枚举每一位上的值,然后判断它在行,列,格中是否可行就可以了 codecodecode #include<iostream> #include<cstdio> #include<cstring> using namespace std; string s; bool flag; int a[10][10]; int f[10][10], f1[10][10], f2[10][10]; int dg[10]={0, 1, 1, 1, 2, 2,..

ha 275

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【JAVA练习】判断所给数独是否正确(简单)

这学期学JAVA,然而之前并没怎么学。 题目 输入: N 为数独小方块的长度(平常做的数独是 N = 3) 数独每个格的数字(N^4 个,N^2 行, N^2 列) 输出: YES(若所给的数独是正确的) NO(若所给的数独是错误的) 思路及代码 我的思路很平凡,直接检测每行、每列、每个小方块 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner

su1yu4n's Blog 1157

深度优先搜索之数独游戏

1. 问题描述: 你一定听说过“数独”游戏。 如下图所示,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。 数独的答案都是唯一的,所以,多个解也称为无解。 本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。 本题的要求就是输入数独题目,程序输出数独的唯一解。我...

二哈 2795

数独(nyoj 722)

数独 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述          数独是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个3*3宫内的数字均含1-9,不重复。 每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。        有

23333333 1274
上一篇: 10101 : 正面交锋
下一篇: 10270 : 青蛙的游戏
oj_onecode
博客等级 码龄8年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oj_onecode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值