int fixed[9][9]; void PRINT(int sudu[],int i,int j) { for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { printf("%2d,",sudu[i*9+j]); } printf("\n"); } } void tryNext(int sudu[],int i,int j) { //if(valid) int num=1; bool valid=true; if(fixed[i][j]) { if(j>=8) { if(i==8) { PRINT(sudu,i,j); } else tryNext(sudu,i+1,0); } else tryNext(sudu,i,j+1); return; } for( num=1;num<=9;num++) { //行是否冲突 int k=0; for(;k<9;k++) { if(sudu[i*9+k]==num) { goto NEXT; } } //列是否冲突 for(k=0;k<9;k++) { if(sudu[k*9+j]==num){ goto NEXT; } } //小矩形是否冲突 int h = i/3; int l = j/3; for(int m=0;m<3;m++) { for(int n=0;n<3;n++) if(sudu[(h*3+m)*9+(l*3)+n]==num ){ goto NEXT; } } if(valid) { //都不冲突 sudu[i*9+j]=num; if(j>=8) { if(i==8) { PRINT(sudu,i,j); } else { tryNext(sudu,i+1,0); } } else tryNext(sudu,i,j+1); } NEXT:; } sudu[i*9+j]=0; } int main(int argc,char*argv[]) { int sudu[9][9]={ 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, }; for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(sudu[i][j]!=0) fixed[i][j] = 1; } } tryNext(&sudu[0][0],0,0); return 0; }
这个不管什么样的初始化,全都重新搜索一遍,会搜索所有可能的结果,而不是搜索到结果后就停止的那种,暴力法。
相关推荐
微信小程序——[小游戏类]数独小游戏(截图+源码).zip 微信小程序——[小游戏类]数独小游戏(截图+源码).zip 微信小程序——[小游戏类]数独小游戏(截图+源码).zip 微信小程序——[小游戏类]数独小游戏(截图+...
一个简单的解数独的小程序 //***求数独的解,参数mod为0或1,time0为搜索开始时的时间,mod=0时仅检查Data1中数独是否有解,有解则抛出1,mod=1时求出所有解并输出*** { int i,j,im=-1,jm,min=10; int mark[10]; ...
数独游戏小程序源码的提供,是对于开发人员来说一个很好的学习和实践案例,它可以帮助我们了解微信小程序的基本架构和开发流程。 1. **微信小程序开发环境搭建**: 在开始编写数独小程序之前,首先需要安装微信...
这是我对数独应用程序的尝试——主要是为了解决计算这一切的挑战。 这最初是在我在周末的 Code Camp 上参加关于使用函数式编程解决数独的课程之后开始的——其中之一是它最终在单行递归调用的函数中看起来非常优雅和...
基于启发式搜索解决具体数独问题的MATLAB程序源码.zip基于启发式搜索解决具体数独问题的MATLAB程序源码.zip基于启发式搜索解决具体数独问题的MATLAB程序源码.zip基于启发式搜索解决具体数独问题的MATLAB程序源码.zip...
- **Sudoku Solver by Nick Smallbone**:这是一个用Python语言编写的数独求解程序,支持多种求解算法。 - **Sudoku Assistant v1.09 by Andrew Stuart**:提供了多种辅助功能,如提示、错误检查等,帮助用户逐步...
微信小程序 小游戏类 数独小游戏 (源代码+截图)微信小程序 小游戏类 数独小游戏 (源代码+截图)微信小程序 小游戏类 数独小游戏 (源代码+截图)微信小程序 小游戏类 数独小游戏 (源代码+截图)微信小程序 小...
微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏.zip微信小程序源码-数独小游戏....
3. **用户友好界面**:"数独.exe"文件很可能是程序的执行文件,意味着软件提供了一个直观易用的图形用户界面,用户可以方便地输入、查看和解决数独问题。 4. **错误检测与修正**:在解题过程中,软件会实时检查用户...
数独是一种基于逻辑的填充数字游戏,玩家需要在一个9×9的网格中填入数字,使得每一行、每一列以及每一个3×3的小方格都恰好包含数字1至9各一次。为了量化数独问题的难度并有效地生成不同难度级别的数独谜题,本节...
在这个“微信小程序开发-游戏类-数独案例源码.zip”压缩包中,你将获得一个实现数独游戏的小程序示例。数独是一种逻辑解谜游戏,玩家需要填充一个9x9的网格,使得每一行、每一列以及每个3x3的小宫格内都包含数字1到9...
总的来说,数独求解算法程序是计算机科学和算法设计的一个经典实例,它涉及到搜索策略、逻辑推理和优化技巧等多个领域。通过学习和理解这种程序,我们可以更深入地了解如何用代码来解决问题,同时也能够锻炼我们的...
在“shudu.rar_mfc 数独_数独_数独 MFC_数独程序”这个压缩包中,我们可以看到一个使用MFC(Microsoft Foundation Classes)框架在VC6.0环境下开发的数独求解程序。 MFC是微软为Windows平台提供的一套C++类库,它极...
在这个项目中,我们关注的是如何利用微信小程序来实现一个九宫格数独游戏。 首先,我们需要了解数独的基本规则。数独是一种基于逻辑的数字填充游戏,通常在9x9的九宫格中进行,分为9个3x3的小九宫格。每个小九宫格...
标题 "数独程序(c)" 指的是一个用 C 语言编写的数独解决方案。这个程序可能包含了实现数独解法的核心算法,以及相关的数据结构和辅助函数。描述中提到程序注释是用日语编写的,这可能会对非日语使用者造成一些阅读...
在这个场景中,我们关注的是一个使用Delphi编写的四阶数独(Sudoku)程序。四阶数独相对于传统的九阶数独而言,难度和复杂度更低,更适合初学者理解和实践。 在Delphi中开发数独程序,主要涉及到以下几个核心知识点...
数独游戏是数学领域中的一个经典问题。利用LINGO语言,可以建立一个数独模型,并通过LINGO的优化算法来解决该问题。LINGO是一种专门用于解决线性和非线性优化问题的工具,具有简洁的语法和高效的求解器。 LINGO中的...
这个压缩包文件"一个基于启发式搜索解决具体数独问题的MATLAB程序.zip"提供了使用MATLAB实现启发式算法解决数独问题的实例。 MATLAB是MathWorks公司开发的一款强大的数学计算软件,广泛应用于工程计算、数据分析、...
数独小游戏小程序是一款基于微信小程序平台开发的娱乐应用,它为用户提供了一个轻松、便捷的数独游戏体验。作为一款源码,它包含了完整的前端代码,可以让开发者深入理解小程序的开发流程,以及数独游戏的算法实现。...
程序完成了两大核心功能:计算机求解、随机出题 计算机求解数独的算法有很多,比较典型的是回溯法,比较有名的是舞蹈链算法, 都是毫秒级解题。本程序采用舞蹈链算法,以DLL形式加载调用。 程序的界面基于.net完成...