数独游戏的 C 语言实现
最编程
2024-06-01 19:36:36
...
本文实例为大家分享了C语言实现数独小游戏的具体代码,供大家参考,具体内容如下
输入包含9x9的已知数字,空位用0补齐,中间用空格隔开。(输入数独题目确保正确)
输出为输入数独题目的解。
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。
样例输入:
样例输出:
代码:
#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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 面试中常见的矩阵问题 ????
下一篇: 1784 数独
推荐阅读
-
C 语言如何实现对字符串的截取
-
(C 语言中的 Gluttony) 11.实现 Gluttony 的定向移动和同时刷新界面所面临的问题
-
[Unity]三维游戏,C#,如何实现可控的摩托车流
-
使用opencv3和C++编程语言实现简单目标跟踪的Tracker
-
C#版本实现:探究游戏2048的核心算法
-
C语言编写的2048游戏实现
-
Java 8新特性探究(十三)JavaFX 8新特性以及开发2048游戏-JavaFX历史## 跟java在服务器端和web端成绩相比,桌面一直是java的软肋,于是Sun公司在2008年推出JavaFX,弥补桌面软件的缺陷,请看下图JavaFX一路走过来的改进 从上图看出,一开始推出时候,开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode,程序员可以使用Java代码代替。 JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。 JavaFX 2.0 包含非常丰富的 UI 控件、图形和多媒体特性用于简化可视化应用的开发,WebView可直接在应用中嵌入网页;另外 2.0 版本允许使用 FXML 进行 UI 定义,这是一个脚本化基于 XML 的标识语言。 从JDK 7u6开始,JavaFx就与JDK捆绑在一起了,JavaFX团队称,下一个版本将是8.0,目前所有的工作都已经围绕8.0库进行。这是因为JavaFX将捆绑在Java 8中,因此该团队决定跳过几个版本号,迎头赶上Java 8。 ##JavaFx8的新特性 ## ###全新现代主题:Modena 新的Modena主题来替换原来的Caspian主题。不过在Application的start方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)来继续使用Caspian主题。 参考http://fxexperience.com/2013/03/modena-theme-update/ ###JavaFX 3D 在JavaFX8中提供了3D图像处理API,包括Shape3D (Box, Cylinder, MeshView, Sphere子类),SubScene, Material, PickResult, LightBase (AmbientLight 和PointLight子类),SceneAntialiasing等。Camera类也得到了更新。从JavaDoc中可以找到更多信息。 ###富文本 强化了富文本的支持 ###TreeTableView ###日期控件DatePicker 增加日期控件 ###用于 CSS 结构的公共 API
-
C语言实现2048游戏的完整代码
-
C语言编写的“猜数字“小游戏
-
使用C语言编写的易懂猜数字游戏