C++ 数独游戏
C++ 数独游戏
直接上代码:
1 // 数独 sudoku
2
3 #include <iostream>
4
5 using namespace std;
6
7 int P[9][9];
8 bool flag = false;
9
10 // 处理输入
11 void input(){
12 char t;
13 cout << "输入棋盘,空用 0 表示\n";
14 for(int i = 0; i < 9; i ++){
15 for(int j = 0; j < 9; j ++){
16 cin >> t;
17 P[i][j] = t - '0';
18 }
19 }
20 }
21
22 // 处理输出
23 void output(){
24 for(int i = 0; i < 9; i ++){
25 for(int j = 0; j < 9; j ++){
26
27 if(P[i][j]){
28 cout << P[i][j];
29 }else{
30 cout << " ";
31 }
32
33 if(j%3 == 2) cout << " ";
34 }
35 if(i%3 == 2) cout << endl;
36 cout << endl;
37 }
38
39 }
40
41 // 判断即将放入的 是否符合条件
42 bool check(int n, int num){
43
44 // 行
45 for(int i = 0; i < 9; i ++){
46 if(P[n/9][i] == num){
47 return false;
48 }
49 }
50
51 // 列
52 for(int i = 0; i < 9; i ++){
53 if(P[i][n%9] == num){
54 return false;
55 }
56 }
57
58 // 宫
59 int x = n / 9 / 3 * 3;
60 int y = n % 9 / 3 * 3;
61 for(int i = 0; i < 3; i ++){
62 for(int j = 0; j < 3; j ++){
63 if(P[x+i][y+j] == num){
64 return false;
65 }
66 }
67 }
68
69 return true;
70 }
71
72 // [n/9][n%9]
73 void dfs(int n){
74
75 // 成功
76 if(n > 80){
77 flag = true;
78 return;
79 }
80
81 int x = n/9, y = n%9;
82 // 有值 跳过
83 if(P[x][y]){
84 dfs(n+1);
85 return;
86 }
87 // 遍历
88 for(int i = 1; i <= 9; i ++){
89 // 判断
90 if(check(n, i)){
91 // 判断成功 赋值
92 P[x][y] = i;
93 dfs(n+1);
94 // 退出时判断是否完成 完成时退出
95 if(flag){
96 return;
97 }
98 // 未完成 重置棋盘
99 P[x][y] = 0;
100 }
101 }
102 }
103
104 int main(){
105 input();
106 cout << endl << endl;
107 dfs(0);
108 output();
109 return 0;
110 }
111
112
113 /*
114
115 测试用例
116
117 170004000
118 360810054
119 008050109
120 007035048
121 000000270
122 000008601
123 000060080
124 700000000
125 000403016
126
127 */
测试用例子结果

百度百科 世界最难数独
答案秒出, 没有什么是暴力解决不了的~

楠少博客同步更新:https://blog.nanshaobit.top/95
C++ 数独游戏的更多相关文章
- 用html5 canvas和JS写个数独游戏
为啥要写这个游戏? 因为我儿子二年级数字下册最后一章讲到了数独.他想玩儿. 因为我也想玩有提示功能的数独. 因为我也正想决定要把HTML5和JS搞搞熟.熟悉一个编程平台,最好的办法,就是了解其原理与思 ...
- Scrum4.0+5.0 数独游戏
1.题目: 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作 ...
- android数独游戏
最近没事干,照着视频教程写了一个数独游戏,很粗糙还有很多要修改的地方.下面就来说说这个游戏吧 1.自定义一个View控件,用来在屏幕上显示一个9*9的格子,其实就是横着画8条线,竖着画8跳线,然后将其 ...
- android开发——数独游戏
最近研究了一下android,写了一个数独游戏,具体如下: 游戏界面需要重写一个ShuduView继承View, 然后自定义一个Dialog: 1.需要继承 Dialog 类, 2.并要定义一个有参构 ...
- C语言学习 数独游戏
摘要:花了1周多时间学习了C语言,开始练手写解数独游戏的程序. C语言学习 数独游戏 作者:乌龙哈里 时间:2015-11-22 平台:Window7 64bit,TCC 0.9.26(x86-64 ...
- 【DFS】数独游戏
DFS(深度优先搜索): 深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法. 沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在 ...
- 创建随机的9x9数独游戏终盘并打印
创建随机的9x9数独游戏终盘并打印 项目github地址 1. 项目相关要求 1.1 要求 利用程序随机构造出N个已解答的9x9数独棋盘 . 输入 数独棋盘题目个数N(0<N<=10000 ...
- 经典数独游戏+数独求解器—纯C语言实现
"心常乐数独小游戏"(下面简称"本软件")是一款windows平台下的数独游戏软件. 本软件是开源.免费软件. 本软件使用纯C语言编写,MinGW编译,NSIS ...
- java程序计算数独游戏
兴趣来了,写了个简单的数独游戏计算程序,未做算法优化. 通过文件来输入一个二维数组,9行,每行9个数组,数独游戏中需要填空的地方用0来表示.结果也是打印二维数组. import java.io.Fil ...
- Swift数独游戏优化——C++与OC混编、plist自动生成
一.为什么要C++与OC混编? 在我之前的数独游戏中涉及到的数独游戏生成算法是参考的网上其他人的算法,是利用C++来实现的. 但是在我的例子中我发现这样存在一定的局限性: 1.我是利用Termin ...
随机推荐
- 基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南
小仙男前端代码风格规范指南v1.0 概述 本规范是适用于小仙男团队及前端团队所搭建的各种前端框架代码的通用风格规范指南: 使用时,请遵循指南细则进行代码风格约束,并在提交之前确保进行代码风格的修正操作 ...
- 【SpringCloud】(二)Eureka注册中心和Feign远程调用
1 SpringCloud 核心 SpringCloud基于HTTP协议,这是和Dubbo最本质的区别,Dubbo的核心是RPC(远程方法调用) Eureka:注册中心 Ribbon:客户端负载均衡 ...
- Linx 阶段一
Linux Linux常用命令 具体演示 1). ls 2). pwd 3). touch 4). mkdir 5). rm 使用技巧 1. 连按 Tab健自动补齐文件名 2. ll 查看当前目录文件 ...
- springCloud Alibaba服务的注册与发现之eureka搭建
1.创建eureka微服务模块.导入maven依赖. <dependency> <groupId>org.springframework.cloud</groupId&g ...
- Valgrind交叉编译
Valgrind交叉编译 编译环境:ubuntu16.04 x64 开发平台:hisi3535 arm板 1.下载Valgrind 我下载的版本为 valgrind-3.12.0.tar.bz2 所有 ...
- C# 当前进程是否有控制台窗口
WPF应用程序,在VS的项目属性中,可以设置输出类型: 那我们在代码中,如何判断应用的类型呢.有没有控制台?是否Windows应用程序还是控制台应用程序? Kernel32下函数GetConsoleW ...
- RocketMQ消费者是如何负载均衡的
摘要:RocketMQ 支持两种消息模式:集群消费( Clustering )和广播消费( Broadcasting ). 本文分享自华为云社区<一文讲透RocketMQ消费者是如何负载均衡的& ...
- RestTemplate发送get请求并携带请求头
//设置请求头 HttpHeaders headers = new HttpHeaders(); headers.add("X-Access-Token", huaWenToken ...
- selenium web控件的交互进阶
Action ActionChains: 执行PC端的鼠标点击,双击,右键,拖曳等事件 TouchActions: 模拟PC和移动端的点击,滑动,拖曳,多点触控等多种手势操作 动作链接 ActionC ...
- boot-admin 项目数据库缺省字段设计之最佳实践
数据库(Database)中的缺省字段(也称为默认字段),就是在一般情况下,每个数据表(Table)必须包含的字段(Field),这类字段用于满足特定的数据需求,字段值的填充或更改一般遵照一定的逻辑要 ...