c语言课程设计报告数独样本

合集下载

c语言课课程设计数独

c语言课课程设计数独

c语言课课程设计数独一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言进行简单的程序设计,并借助数独游戏进行实践。

具体目标如下:1.理解C语言的基本语法和数据类型。

2.掌握C语言的运算符和表达式。

3.学会使用C语言进行条件判断和循环控制。

4.了解数独游戏的规则和解题方法。

5.能够编写简单的C语言程序。

6.能够运用C语言进行数独游戏的编程和调试。

7.能够分析数独游戏的解题过程,并运用程序设计优化解题方法。

情感态度价值观目标:1.培养学生的编程兴趣和自主学习能力。

2.培养学生解决问题的能力和团队合作精神。

3.培养学生对程序设计的热爱,提高其对计算机科学的认知。

二、教学内容教学内容分为四个部分:C语言基础知识、数独游戏规则、C语言编程实践和数独游戏编程。

1.C语言基础知识:介绍C语言的基本语法、数据类型、运算符和表达式。

2.数独游戏规则:讲解数独游戏的规则和解题方法。

3.C语言编程实践:通过编写简单的C语言程序,使学生掌握C语言编程的基本技巧。

4.数独游戏编程:利用C语言编程实现数独游戏的自动解题功能。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过讲解C语言的基本语法和数据类型,使学生掌握C语言编程的基础知识。

2.案例分析法:通过分析数独游戏的解题过程,使学生了解如何运用C语言编程解决实际问题。

3.实验法:让学生动手编写C语言程序,进行数独游戏的编程和调试,提高学生的实际操作能力。

四、教学资源1.教材:《C语言程序设计》。

2.参考书:《C语言编程实例解析》。

3.多媒体资料:数独游戏教学视频。

4.实验设备:计算机、编程软件。

教学资源将用于支持教学内容和教学方法的实施,帮助学生更好地理解和掌握C语言编程以及数独游戏的解题方法。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。

1.平时表现:通过课堂参与、提问和小组讨论等方式评估学生的学习态度和积极性。

c语言课程设计报告_数独

c语言课程设计报告_数独

课程设计数独解谜程序2015年4月20日设计题目 学号 专业班级 学生姓名 指导教师目录一、使用资料................................................................. 错误!未定义书签。

二、设计内容 (11)三、详细设计说明 (12)四、软件使用说明 (13)五、附录:部分程序清单(带有较详细的注释) (19)一、使用资料C++中栈结构建立与操作什么是栈结构栈结构是从数据的运算来分类的,也就是说栈结构具有特殊的运算规则,即:后进先出。

我们可以把栈理解成一个大仓库,放在仓库门口(栈顶)的货物会优先被取出,然后再取出里面的货物。

而从数据的逻辑结构来看,栈结构起始就是一种线性结构。

如果从数据的存储结构来进一步划分,栈结构包括两类:顺序栈结构:即使用一组地址连续的内存单元依次保存栈中的数据。

在程序中,可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈低,再定义一个变量top保存栈顶的序号即可。

链式栈结构:即使用链表的的形式保存栈中各元素的值。

链表首部(head指针所指向元素)为栈顶,链表尾部(指向地址为NULL)为栈底。

在栈结构中只能在一端进行操作,该操作端称为栈顶,另一端称为栈底。

也就是说,保存和取出的数据都只能从栈结构的一端进行。

从数据的运算角度来分析,栈结构是按照“后进先出”的原则处理结点数据的。

在栈结构中,只有栈顶元素是可以访问的,栈结构的数据运算也是非常简单。

一般栈结构的基本操作只有两个:入栈(Push):将数据保存到栈顶的操作。

进行入栈操作前,先修改栈顶指针,使其向上移一个元素位置,然后将数据保存到栈顶指针所指的位置。

出栈(Pop):将栈顶数据弹出的操作。

通过修改栈顶指针,使其指向栈中的下一个元素。

接下来,我们使用C++语言建立顺序栈,并完成顺序栈结构的基本运算准备数据准备在栈操作中需要用到的变量及数据结构等。

#define MAXLEN 50struct DATA{string name;int age;};struct StackType{DATA data[MAXLEN+1];int top;};定义栈结构的长度MAXLEN,栈结构的数据元素类型DATA,以及栈结构的数据结构StackTyp e。

C语言课程设计报告—范例

C语言课程设计报告—范例

XX学院C语言课程设计报告课程名称: C语言课程设计课程编号:报告题目:学生姓名: 学号:专业成绩: 任课教师:评阅日期:C语言课程设计报告一、 C语言课程设计的目的C语言的教学是学生根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

具体来说:1.进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。

试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式)。

(2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。

要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。

(3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:(4)代码设计;包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析;等等;A.主函数(1)分析:主函数的功能比较简单,形式比较简洁,主要功能为:在系统中没有程序所要的文件时,为程序建立一个所许的文件;调用菜单函数。

计算机专业VC++课程设计之数独游戏设计蛋碎版

计算机专业VC++课程设计之数独游戏设计蛋碎版

实用Visual C++课程设计题目名称:数独游戏设计班级:信安1101姓名:曹闯学号:1111290101指导教师:阎光伟完成时间:2013.1.181题目描述利用Visual C++实现数独游戏的功能。

该程序能够设置不同难度等级的游戏,实现数独游戏的多样化,采取有效的算法,保证答案的唯一解。

2功能分析系统主要功能包括:(1)游戏的生成数独游戏的初始化,根据难度在格子里填上数量不同的数字,每种难度下的数字数量相同。

(2)游戏难度的选择难度设置,从简单到困难,难度越大,生成游戏时数字数量越少。

(3)游戏的提示可选中任何没有填入数字的地方选择提示。

提示会给出正确的解,一局游戏只能提示三次。

(4)游戏答案的显示可以直接显示答案,在游戏暂停时禁止使用该功能。

(5)游戏的暂停功能在计时器面板上有暂停按钮,按下暂停按钮后,游戏将进入不计时状态,同时界面将设置为不可操作。

(6)游戏的帮助功能通过帮助文档的使用来进行帮助说明。

3界面分析程序界面由棋盘和按钮组成,在棋盘内,通过单击鼠标选中方格时显示为问号,选中数字时显为蓝色数字。

通过键盘在选中方格填入数字,若填入的数字符合游戏规则,显示为橙色,反之,显示为红色。

按钮处于选中状态时会变成亮色或者周围加上边框。

游戏光标在不同的游戏区域采用了不同的游戏光标。

4系统设计4.1程序整体结构4.1.1程序中的主要游戏类在本程序中,主要分为三大基本类:1、对话框类,2、游戏算法类,3、按钮类。

对话框类包括游戏主对话框和选择难度对话框,自定义按钮类包括游戏主对话框的按钮类和难度选择对话框的按钮类。

主对话框类按钮类游戏算法类对话框类主界面按钮类难度选择按钮类图1游戏主要框架4.2主要模块设计4.2.1游戏基本类设计(1)游戏主话框类的实现过程通过的按钮的响应函数来实现整个游戏的逻辑控制,当“新游戏”按钮被单击后,游戏界面将进行初始化,后续的操作才能继续进行,通过键盘响应函数来实现对输入数字的控制,通过鼠标移动函数OnMouseMove()来判断区域和加载不同的光标。

c语言 数独4宫格

c语言 数独4宫格

c语言数独4宫格以下是一个简单的C语言程序,用于解决4宫格数独问题。

该程序使用回溯算法,通过递归尝试填充每个空格,如果发现矛盾则回溯到上一个状态。

#include <stdio.h>int board[4][4]; // 存储数独表格int backtrack(int row, int col);int main() {int i, j;printf("请输入4宫格数独:\n");for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {scanf("%d", &board[i][j]);}}if (backtrack(0, 0)) {printf("解决成功!\n");for (i = 0; i < 4; i++) {for (j = 0; j < 4; j++) {printf("%d ", board[i][j]);}printf("\n");}} else {printf("无解!\n");}return 0;}int backtrack(int row, int col) {int i, j;if (row == 4) { // 表格填满,数独解决成功return 1;}if (col == 4) { // 当前行填满,进入下一行return backtrack(row + 1, 0);}if (board[row][col] != 0) { // 该位置已有数字,进入下一个位置return backtrack(row, col + 1);}for (i = 1; i <= 4; i++) { // 尝试填充数字1-4if (isValid(row, col, i)) { // 检查填充是否合法 board[row][col] = i; // 填充数字if (backtrack(row, col + 1)) { // 递归进入下一个位置return 1; // 数独解决成功,返回1} else { // 该数字不合法,回溯到上一个状态,尝试下一个数字board[row][col] = 0;}}}return 0; // 数独无解,返回0}int isValid(int row, int col, int num) { // 检查填充是否合法int i, j;// 检查列是否有重复数字for (i = 0; i < 4; i++) {if (board[i][col] == num) {return 0; // 该列已有数字num,不合法}}// 检查行是否有重复数字for (j = 0; j < 4; j++) {if (board[row][j] == num) {return 0; // 该行已有数字num,不合法}}// 检查3x3方格是否有重复数字for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {if (board[row - i][col - j] == num) {return 0; // 该3x3方格已有数字num,不合法}}}return 1; // 该位置可以填充数字num,合法返回1,否则返回0。

c语言数独字谜游戏课程设计

c语言数独字谜游戏课程设计

c语言数独字谜游戏课程设计学生课程设计报告课程设计题目:数独字谜游戏专业名称:软件工程2021年6月21日一、课程设计内容数独字谜游戏:数独字谜游戏是在一个9x9的正方形内,给出一定的数字,让玩家在剩余的空格之内填写数字,最终使每一行,每一列,每一个3x3的小正方形都只有1-9,并且不重复,这样玩家就算通关的一款游戏。

二、技术路线是基于vc++6.0环境下所开发的程序,重新加入了playsound()函数,设置了游戏的背景音乐。

加入了,头文件,运用了以系统时间为种子的随机函数。

接收用户键盘输入信息,实现进入游戏,输入坐标,输入数字等功能。

运用的类型转换,将char型数组转换为int 型数组。

三、设计与同时实现1.游戏基本功能:游戏存有难度挑选,通关后稳步游戏和选择退出游戏的界面。

游戏在选择难度后,会在布满数字的9x9的正方形宫格内随机生成一些空白字符,根据选择难度的不同,生成的空白字符数目会不同,空白字符越多,难度越大。

通过正方形宫格外的座标,用键盘输入想要输出数字的座标和数字,随后可以表明出来输出数字后崭新宫格,再重复以上操作方式,直至每一行,每一列,每一个3x3的宫格内只有1-9这9个数字并且不重复,游戏即使通关。

游戏通关后,可以选择继续游戏,并且挑战更大难度,也可以选择退出游戏,下次再战。

2.函数定义和声明(1)头文件#include#include//随机函数#include//系统时间#include\//彩色文本#include(2)函数声明boolyz(charb[9][10])//验证子函数,验证每一行,每一列,每一个3x3宫格都是1-9.3.主函数intmain()voidmain(){playsound((char*)\chara[9][10]={{\{\{\{\{\{\{\{\{\intb[81],c[81],q=0,p=0;intk,x;do{settextcolor(14);cout<>>>>*^0^*\\n\settextcolor(10);cout<>k;switch(k){inti,j,m,n,gs;case1:srand((int)time(0));for(gs=0;gs<30;gs++)//随机在已经布满的9x9宫格里,运用随机数,并且以系统时间为参数,随机产生空白字符,{//低难度的数独,每次产生的空白字符为22个左右,m=(int)(10*rand()/(rand_max+1.0));n=(int)(10*rand()/(rand_max+1.0));a[m][n]='';b[q]=m;//将随机产生的空白字符的坐标分别存在b,c两个数组中.c[p]=n;q++;p++;}b[30]=10,c[30]=10;do{settextcolor(15);cout<cout<settextcolor(15);cout<for(j=0;j<9;j++)//输出不同颜色的题目字符和空白字符.{if(j%3!=0){settextcolor(3);cout<for(q=0,p=0;q<31,p<31;q++,p++)//将随机的空白字符单独则表示出,并且以另一种颜色输入则表示.{if(i==b[q]&&j==c[p]){settextcolor(14);cout<if(q==30&&p==30)//将剩下的题目字符用另一种颜色输出表示{settextcolor(12);cout<settextcolor(3);cout<settextcolor(3);cout<for(q=0,p=0;q<31,p<31;q++,p++){if(i==b[q]&&j==c[p]){settextcolor(14);cout<break;}if(q==30&&p==30){settextcolor(12);cout<settextcolor(3);cout<settextcolor(3);cout<settextcolor(3);cout<settextcolor(15);cout<if(j%3!=0){settextcolor(3);cout<for(q=0,p=0;q<31,p<31;q++,p++){ if(i==b[q]&&j==c[p]){settextcolor(14);cout<if(q==30&&p==30){settextcolor(12);cout<settextcolor(3);cout<。

C数独课程设计

C数独课程设计

C数独课程设计一、课程目标知识目标:1. 学生能理解数独游戏的规则,掌握数独的基本解题技巧;2. 学生能运用逻辑推理和排除法解决数独问题,完成指定难度的数独题目;3. 学生了解数独的历史起源,认识到数学游戏的趣味性和挑战性。

技能目标:1. 学生通过数独游戏,培养观察能力、分析能力和逻辑推理能力;2. 学生能够运用所学知识,自主解决数独问题,提高解决问题的能力;3. 学生学会合作交流,分享解题心得,提高团队协作能力。

情感态度价值观目标:1. 学生在数独游戏中体验数学的乐趣,培养对数学的兴趣和热情;2. 学生面对数独挑战,保持积极的心态,树立克服困难的信心;3. 学生通过数独游戏,培养耐心、细心和坚持到底的精神,养成良好的学习习惯;4. 学生在团队合作中,学会尊重他人,倾听他人意见,形成良好的道德品质。

二、教学内容本节数独课程内容主要依据教材中逻辑思维与数学游戏的相关章节,结合课程目标,组织以下教学大纲:1. 数独游戏规则介绍:讲解数独的起源、发展以及游戏规则,使学生了解数独的基本概念。

2. 数独基本解题技巧:教授数独的基本解题方法,如唯一数字法、排除法、唯一候选数法等。

3. 数独题目练习:根据学生的年级和认知水平,选择适合的数独题目进行练习,分为初级、中级和高级难度。

4. 解题策略与技巧探讨:引导学生运用所学解题技巧,分析讨论数独题目,提高解题能力。

5. 数独游戏体验:组织学生进行数独游戏比赛,培养学生竞争意识和团队合作精神。

6. 解题心得分享:鼓励学生分享解题过程中的心得体会,总结经验,互相学习。

7. 数学思维拓展:通过数独游戏,引导学生发现数学规律,培养学生的创新思维和拓展思维。

教学内容安排和进度如下:1. 第一课时:数独规则介绍、基本解题技巧学习;2. 第二课时:初级数独题目练习、解题策略探讨;3. 第三课时:中级数独题目练习、解题心得分享;4. 第四课时:高级数独题目挑战、数独游戏体验;5. 第五课时:数学思维拓展,总结数独学习成果。

C语言数独游戏大作业开发文档(作业报告)

C语言数独游戏大作业开发文档(作业报告)

C语言程序设计大作业数独辅助器开发文档项目名称:数独辅助器组别:组员:目录一、软件功能说明二、架构设计1、任务分解2、文件夹各主要文件说明3、界面设计三、代码说明1、常量、全局变量、结构体说明2、算法部分函数说明3、图形化部分函数说明四、编译运行方式一、软件功能说明数独是源自18世纪瑞士的一种数学游戏。

是一种运用纸、笔进行演算的逻辑游戏,在计算机诞生后,数独也可通过编程在计算机上实现。

数独规则为:在一个9*9的九宫格子且每一宫又分为3*3九个小个子的盘面上,根据已知的数字,推理出所有剩余空格的数字,使得所填数字为1-9这九个整数中的某一个,且满足每行、每一列、每个小宫格内的数字均包含1-9九个整数且不重复。

该程序设计了一款数独辅助器,将数独图以.sm文件形式导入到程序运行目录下的Map文件夹,即可使用该程序辅助游戏。

主要辅助功能有二:(一)选中数独图中任意一格,其所属行、列、九宫格会加深颜色,方便用户直观看清已有数字,更快地寻找答案。

(二)点击解题按钮,程序会自动解题并显示答案。

二、架构设计1、任务分解该程序的主要模块为:(1)使用Win32 API设计数独辅助器界面,对图标及底版的尺寸、颜色、字体等进行设置并绘制;(2)使用文件访问读取文件夹中的数独题目,用双向环状链表存储数独题目,方便数独题目的增减;(3)利用穷举的思想和深度搜索的方法设计算法,解出数独答案。

2、文件夹各主要文件说明(1)Sudoku.h:代码头文件;(2)Sudoku.cpp:代码源文件;(3)Image文件夹:界面设计中用到的按钮图案;(4)Map文件夹:用于存储数独题目,可以导入需要程序辅助的数独题目;(5)Map文件夹下存储的数独题目为.sm格式,意为SudokuMap,文件格式示例如下:- 1.sm8 0 0 0 0 0 0 0 00 0 3 6 0 0 0 0 00 7 0 0 9 0 2 0 00 5 0 0 0 7 0 0 00 0 0 0 4 5 7 0 00 0 0 1 0 0 0 3 00 0 1 0 0 0 0 6 80 0 8 5 0 0 0 1 00 9 0 0 0 0 4 0 03、界面设计切换上一张数独图切换下一张数独图选中某一格,其相关联的行、列、九宫格颜色会加深,方便寻找答案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计报告
设计名称C语言课程设计
专业班级
姓名
学号
指引教师
实习时间
成绩
目录
一、设计目................................................................. 错误!未定义书签。

二、设计内容............................................................. 错误!未定义书签。

三、详细设计阐明..................................................... 错误!未定义书签。

四、软件使用阐明..................................................... 错误!未定义书签。

五、设计总结(课程设计心得与体会) ................ 错误!未定义书签。

六、附录1:参照文献 ............................................. 错误!未定义书签。

七、附录2:某些程序清单(带有较详细注释) . 错误!未定义书签。

八、教师评语............................................................. 错误!未定义书签。

一、设计目
通过课程设计实践环节教学,可以加深学生对课堂所学基本知识掌握与理解,提高学生对所学内容综合运用能力;同步也可以通过查询有关资料,培养学生自学能力、接受新知识能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生事实上机调试程序能力。

“理论与实践”相结合,使学生得到较好锻炼,为后来学习、工作打下坚实基本。

每个学生需要独立完毕教师安排设计题目或由学生自拟实际设计题目,但自拟自拟题目须经指引教师批准方可生效。

二、设计内容
1、开发一款“数独”小游戏(限最多1人完毕)
规则:将数字1-9放置在每个小格里,使得每一行、没一列、每一种3*3方框里都没有重复数字即可。

规定:
(1)、字符界面完毕即可(图形界面更好,有加分)
(2)、可以没有表格线
(3)、原有36个数字及位置随机产生,原有数字越多,游戏越简朴。

可以由顾客输入原有数字个数,以控制游戏难度;
(4)、其他空格处数字由玩家从键盘输入,当输入某个数字违背了规则,则游戏以失败结束,显示“Failure!“;当所有空格处数字均已经填上,并且没有违背规则,则游戏以成功结束,显示“Success!”。

三、详细设计阐明
1.数独小游戏阐明
数独游戏在9×9方格内进行,分为3×3小方格,被称为“区”:区数独游戏目是依照下列规则,用1至9之间数字填满空格,一种格子只能填入一种数字。

每个数字在每一行只能浮现一次。

每个数字在每一列只能浮现一次。

每个数字在每一区只能浮现一次
1>产生原始数字:由系统产生若干数字(1~81),作为游戏原始数字供玩家进行数独游戏
2>退出系统:顾客填完数独,系统判断正误,然后退出系统.
2.数独游戏流程图
四、软件使用阐明
1)系统规定:win98以上操作系统;
2) 语言平台:tc++或vc++6.0;运营程序看到如下界面:
输入数据
运营成果
五、设计总结(课程设计心得与体会)
通过第18周这个星期程序设计,我从中得到了许多经验以及软件设计某些新思路;从数独游戏设计以及分析中,本人从中理解到了数据构造对于计算机软件设计重要性,它使用,可以变化一种软件运营周期,也可以将软件思路从繁化简,并且都可以通过数据构造有关引导,将自身此前编程思想进行扩充,发展;这也是在这次课程设计中我所获益地方。

随着时间推移,课程设计也即将结束了,但这个学期数据构造学习还是具备相称大意义,它从一种限度上变化了咱们编程思想,如何将一种程序迅速而又准备进行编写,进行编译,都成为了咱们思考重点,也通过这一种学期学习,咱们将数据构造思想带入到了咱们后来编程学习中去。

在这个阶段,我也明白了,好思想,不能提留于字面上认知,还需要是平时多练多写某些有关程序,并且通过修改,加入新算法去尝试变化自己某些编程思想。

保持更新算法速度,这才是核心。

课程设计已经接近尾声了,但它给我不只是程序设计上满足,更重要是对自己编程思想一次更新,以及对算法一种全新结识!
六、附录1:参照文献
[1]谭浩强. C程序设计(第三版) . 北京:清华大学出版社,
[2]谭浩强. C程序设计题解与上机指引(第三版) . 北京:清华大学出版社,
[3] 刘振安,刘燕君,孙忱. C++语言课程设计.北京:高等教诲出版社,
[4] 陈志泊,张海燕,王春玲. Visual C++程序设计. 中华人民共和国铁道出版社 ,
[5] 吕凤哲,C++语言程序设计(第二版).北京:电子工业出版社,
[6] 殷人昆,陶永雷等.数据构造(用面向对象办法与C++ ).北京:
清华大学出版社,1999
[7] 严蔚敏,吴伟民,数据构造.北京:清华大学出版社,1997
[8] 李春葆.数据构造—考研指引.北京:清华大学出版社,[9] 陈慧南.数据构造—C++语言描述.北京:人民邮电出版社,
七、附录2:某些程序清单(带有较详细注释)int result=0;//成果数
{
int a[9][9];
for(int i=0;i<9;i++)
{ printf("请输入第%d行9个数:",i+1);
for(int j=0;j<9;j++)
scanf("%d",&a[i][j]);
}
printf("数独解为:\n\n");
Sudoku(a,0);
if(result==0)
printf("此数独无解!");
return 0;
}
//输出可行解
void print(int a[9][9])
bool check(int a[9][9],int i,int j,int k)
{int m,n;
//判断行
for(n=0;n<9;n++)
{if(a[i][n] == k)
return false;}
//判断列
for(m=0;m<9;m++)
{if(a[m][j] == k)
return false;}
//判断所在小九宫格
int t1=(i/3)*3,t2=(j/3)*3;
for(m=t1;m<t1+3;m++) {
for(n=t2;n<t2+3;n++) { if(a[m][n] == k) return false;}
}
//可行,返回true
return true;
//数独求解函数
void Sudoku(int a[9][9],int n) {int temp[9][9];
int i,j;
for(i=0;i<9;i++)
{ for(j=0;j<9;j++)
temp[i][j]=a[i][j];
}
i=n/9;j=n%9;//求出第n个数行数和列数if(a[i][j] != 0) //已有原始数据
{ if(n == 80) //是最后一种格子,输出可行解print(temp);
else //不是最后一种格子,求下一种格子Sudoku(temp,n+1);
}
else //没有数据
{for(int k=1;k<=9;k++)
{ bool flag=check(temp,i,j,k);
if(flag) //第i行、第j列可以是k
{temp[i][j]=k;//设为k
if(n == 80)
print(temp);
else Sudoku(temp,n+1);
temp[i][j]=0;//恢复为0,判断下一种k } }
}
}。

相关文档
最新文档