C++实现数独游戏

news/2024/10/19 23:44:38/

问题描述:

数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个3X3粗线宫内的数字均含1-9,并且不重复。
例如:
输入
请添加图片描述
输出:
请添加图片描述
数据范围:输入一个 9*9 的矩阵
输入描述:
包含已知数字的9X9盘面数组[空缺位以数字0表示]

输出描述:
完整的9X9盘面数组

示例1
输入:
0 9 2 4 8 1 7 6 3
4 1 3 7 6 2 9 8 5
8 6 7 3 5 9 4 1 2
6 2 4 1 9 5 3 7 8
7 5 9 8 4 3 1 2 6
1 3 8 6 2 7 5 9 4
2 7 1 5 3 8 6 4 9
3 8 6 9 1 4 2 5 7
0 4 5 2 7 6 8 3 1
输出:
5 9 2 4 8 1 7 6 3
4 1 3 7 6 2 9 8 5
8 6 7 3 5 9 4 1 2
6 2 4 1 9 5 3 7 8
7 5 9 8 4 3 1 2 6
1 3 8 6 2 7 5 9 4
2 7 1 5 3 8 6 4 9
3 8 6 9 1 4 2 5 7
9 4 5 2 7 6 8 3 1

完整代码

#include<iostream>
#include<vector>
#include<set>
using namespace std;
void sudoku(vector<vector<int>>& val, int i, int j, bool& flag) {//判断是否遍历成功if (i >= 9 || j >= 9) {flag = 1;//遍历成功,置为一return;}set<int> s;if (val[i][j] == 0) {for (int k = 0; k < 9; k++) {s.insert(val[i][k]);s.insert(val[k][j]);}int r = i / 3, l = j / 3;for (int h = r * 3; h < r * 3 + 3; h++) {for (int k = l * 3; k < l * 3 + 3; k++) {s.insert(val[h][k]);}}for (int k = 1; k < 10; k++) {if (!flag && s.find(k) == s.end()) {val[i][j] = k;if (j < 8)sudoku(val, i, j + 1, flag);elsesudoku(val, i + 1, 0, flag);}}if (flag == 0) {val[i][j] = 0;return;}}else {if (j < 8)sudoku(val, i, j + 1, flag);elsesudoku(val, i + 1, 0, flag);}
}
int main() {vector<vector<int>> val(9, vector<int>(9));for (int i = 0; i < 9; i++)for (int j = 0; j < 9; j++)cin >> val[i][j];bool flag = false;sudoku(val, 0, 0, flag);for (int i = 0; i < 9; i++) {for (int j = 0; j < 8; j++)cout << val[i][j] << " ";cout << val[i][8] << endl;}return 0;
}

http://www.ppmy.cn/news/380137.html

相关文章

winform数独C#的数独游戏

功能描述 winform数独C#的数独游戏 本程序基于.netframework使用C#语言开发&#xff0c;实现功能&#xff1a; 1、各个难度随机出题(New)&#xff1b; 2、数独解题提示(Compute)&#xff1b; 3、输入的合法性校验&#xff1b; 思路分享 说一下开发步骤及思路&#xff1a; 1、…

【数独】数独游戏-微信小程序开发流程详解

有没有玩过数独游戏呢&#xff0c;听说&#xff0c;它是一个能训练大脑思维的棋盘类游戏&#xff0c;游戏规则很简单&#xff0c;通过小程序来实现很容易&#xff0c;非常适合对数独游戏逻辑感兴趣的同学&#xff0c;选择它开发入门吧。 准备 会使用微信开发者工具&#xff0…

数独游戏-蓝桥杯-C语言,数独游戏_java_深搜+回溯

问题描述 你一定听说过“数独”游戏。 如【图1.png】&#xff0c;玩家需要根据99盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列、每一个同色九宫内的数字均含1-9&#xff0c;不重复。 数独的答案都是唯一的&#xff0c;所以&#xff…

python数独游戏源代码_Python数独游戏源代码

Python数独游戏源代码 Python代码狂人 Python代码大全 Python数独游戏源代码、源程序共包括两个程序文件:main.py及build.py main.py import sys import pygame from pygame.color import THECOLORS as COLORS from ShuDu.build import * def draw_background(): # white back…

java 数独游戏_java数独游戏完整版分享

本文实例为大家分享了java数独游戏的具体代码,供大家参考,具体内容如下 自己写的数独游戏,共9关,代码如下: 1、DoShudu类用于产生数独数组 import java.util.Random; public class DoShudu {/** * @param args */ public static void main(String[] args) {// TODO Auto-g…

html5数独游戏设计,数独游戏的前端实现

之前学习目的写的一个数独游戏&#xff0c;用jquery模块形式、mvc模式实现的。 1. controller.sudoku.js// Controller Sudoku.js (function ($) { $(function () { use strict; // Get filled numbers from html tables var getTableNums function () { var inputArr [[], […

c语言编程数独游戏,编程做数独游戏

数独游戏非常好玩,可以训练玩家的逻辑推理能力。数独游戏的规则是: 1.在99的大九宫格内,已给定若干数字,其他宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。 2.必须满足的条件:每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数…

爱创科技助力「中粮梅林」守正出新,致力打造罐头新标准

中国预制菜产业发展迅速&#xff0c;企业数量已经从十几年前的2000家&#xff0c;增加至如今超过7万家。2021年中国预制菜行业的市场规模近3500亿元&#xff0c;有机构报告预测&#xff0c;2026年预制菜市场规模将突破万亿元。 随着国内预制菜行业发展态势迅猛&#xff0c;在各…