c语言实现数独游戏求解

news/2024/10/19 19:31:33/

数独游戏,c语言

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

输入包含9x9的已知数字,空位用0补齐,中间用空格隔开。(输入数独题目确保正确)
输出为输入数独题目的解。

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

样例输出:
8 1 2 7 5 3 6 4 9
9 4 3 6 8 2 1 7 5
6 7 5 4 9 1 2 8 3
1 5 4 2 3 7 8 9 6
3 6 9 8 4 5 7 2 1
2 8 7 1 6 9 5 3 4
5 2 1 9 7 4 3 6 8
4 3 8 5 2 6 9 1 7
7 9 6 3 1 8 4 5 2

C语言代码样例

#include <stdio.h>
#include <stdlib.h>int *fillnumber(int a[9][9][10],int number,int i,int j){for (int k=0;k<9;k++){a[i][k][number]++;a[k][j][number]++;}for (int n=0;n<3;n++){for (int m=0;m<3;m++){a[i/3*3+n][j/3*3+m][number]++;}}return a;
}
int *resetnumber(int a[9][9][10],int number,int i,int j){for (int k=0;k<9;k++){a[i][k][number]--;a[k][j][number]--;}for (int n=0;n<3;n++){for (int m=0;m<3;m++){a[i/3*3+n][j/3*3+m][number]--;}}return a;
}void search(int step, int a[9][9],int g[9][9][10]){if (step==0) {for (int i=0;i<9;i++){for (int j=0;j<9;j++){printf("%d ",a[i][j]);}printf("\n");}exit(0);}for (int i=0;i<9;i++){for (int j=0;j<9;j++){if (a[i][j]==0) {for (int number=1;number<10;number++){if (g[i][j][number]==0){fillnumber(g,number,i,j);a[i][j]=number;search(step-1,a,g);a[i][j]=0;resetnumber(g,number,i,j);}}return;}}}
}int main(int argc, const char * argv[]) {int a[9][9];int abool[9][9][10];int step=0;for (int i =0;i<9;i++){for (int j=0;j<9;j++){for (int k=1;k<10;k++) {abool[i][j][k]=0;}}}for (int i =0;i<9;i++){for (int j=0;j<9;j++){scanf("%d",&a[i][j]);if (a[i][j]==0) {step++;}else{fillnumber(abool,a[i][j],i,j);}}}search(step,a,abool);return 0;
}

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

相关文章

Spark面试题二十道

问题 1&#xff1a;什么是Apache Spark&#xff1f; 答案&#xff1a;Apache Spark是一个快速、通用的集群计算系统&#xff0c;旨在处理大规模数据处理和分析任务。它提供了高级的编程模型和丰富的库&#xff0c;可以在分布式环境中进行数据处理、机器学习、图计算等。 问题…

python可以数独游戏吗_Python数独游戏

我是python和StackOverflow的新手&#xff0c;尝试编写一个小程序来检查一个数独难题(即一系列列表)是正确的(True)还是不正确的(False)。 所以我通过编写两个函数来分解它&#xff0c;一个检查行(即检查1-n-中的每个数字中是否有一个&#xff0c;其中n是列表的长度)和一个检查…

HTML5 Canvas制作数独游戏(三)

上篇已经实现了点选后给予显示&#xff0c;本篇就开始讲解如何往数独中填入数字。这里使用的是在数独右边区域展示1-9数字&#xff0c;选择数字后自动填入。 那这1-9数字也得画出来&#xff0c;那就需要第3块画布了。添加标签如下&#xff08;当然这里的边框是不需要的&#xf…

数独游戏 | c++ | BFS

零、今天是10月5号&#xff0c;我写出了数独游戏的解啦&#xff01; 一、题目描述&#xff08;伪&#xff09; 输入一个未解的数独盘&#xff0c;输出它的结果。 Input 共9行&#xff0c;每行9个数字&#xff08;数字之间没有空格&#xff09; 备注&#xff1a;如果这一格已经填…

Linux数独小游戏C语言,发一个自己制作的数独游戏代码!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void draw(int i,int j) {setcolor(5); rectangle(45j*30,45i*30,36(j1)*30,36(i1)*30); } void guding(int i,int j) { setcolor(14); rectangle(45j*30,45i*30,36(j1)*30,36(i1)*30); } void undraw(int i,int j) {setcolor(0);…

HTML5 Canvas制作数独游戏(四)

那现在就开始本篇内容&#xff1a;通过一个简单的算法自动获取数独需要的二维数组。虽然和canvas没太大关系&#xff0c;但是做游戏嘛&#xff0c;总是需要算法的。 首先初始化一个99的数组&#xff0c;全部填入初始值0。 function getArrInit(rowA, colB){//获取9*9的数组&am…

python可以数独游戏吗_如何用Python创建数独游戏

你可以生成一个随机数独解决方案板&#xff0c;在那里所有的数字都被填写&#xff0c;然后删除其中一些&#xff0c;以创建拼图。这将确保谜题始终有一个解决方案。确保它只有一个解决方案会更具挑战性(提示&#xff1a;一个9x9数独游戏必须至少留下17个数字) 下面的算法将立即…

c 语言写数独游戏,经典数独游戏+数独求解器—纯C语言实现

【转】NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不 ... PHP解释器引擎执行流…