

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include #include#include#include #include using namespace std;int Random 【 9】【 9】=/ 这是填好以后,正确地数独3,9,6,1,2,4,7,8,5,7,8,1,9,5,6,2,4,3,2,4,5,7,8,3,6,1,9,6,3,2,8,4,1,5,9,7,1,7,4,5,3,9,8,2,6,9,5,8,2,6,7,4,3,1,4,1,7,6,9,8,3,5,2,5,6,3,4,1,2,9,7,8,8,2,9,3,7,5,1,6,4;int a 【9】【9】;/ 用于显示地数组bool flag【9】【9】 ; /
2、 用于标记地数组int cnt=0; / 用于标记剩余地方框数void gaoshoujiemian() / 显示第个界面printf( =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=n);printf(nnnnnnnnnn 高 手 数 独 nnnnnnnnnnn 高手公司重磅推出 n 请按任 意键继续 );getch(); / 要用 #include 这个头文件 ; 函数用途: 从控制 台读取个字符,但不显示在屏幕上system(cls); / 执行 DOS 下地清屏命令。void formal(int h【9】【9】,int f【9】【9
3、】) / 初始化数组 , h 就是ramdom f 就是 aint m,n,i,j,l,k; while(true)m=rand()%9; /9 以内地随机数 if(m=0|m=3|m=6)break;srand(time(NULL); / 利用时间设置随机种子while(true)l=rand()%9;if(l=1|l=2)break;srand(time(NULL);while(true)n=rand()%9;if(n=0|n=3|n=6)break;srand(time(NULL);for(i=0;i9;i+)int u;u=h【i 】【 m】;h【i 】【 m】 =h【 i 】【m+l
4、】 ;h【i 】【m+l】=u; / 两列交换while(true)k=rand()%9;if(k=1|k=2)break;不包括 9随机数初始化for(j=0;j9;j+)int p;p=h【 n】【 j 】;h【n】【j 】 =h【 n+k 】【j 】 h【n+k】【 j 】=p; / 两行交换for(i=0;i9;i+)for(j=0;j9;j+)f【i 】【j】=h【i】【j】; /把交换好地数组 给 要用于显示地数组h 给 f 。void copyArray(int from【9】【9】,int to 【9】【9】) / 还原数组int m,n,i,j,l,k;while(true)
5、m=rand()%9;if(m=0|m=3|m=6)break;srand(time(NULL); / 利用时间设置随机种子 , 随机数初始化! while(true)n=rand()%9;if(n=0|n=3|n=6)break;srand(time(NULL);while(true)l=rand()%9;if(l=1|l=2)break;srand(time(NULL);while(true)k=rand()%9;if(k=1|k=2)break;for(i=0;i9;i+)int u;u=from 【i 】【m】 ;from 【i 】【 m】 =from 【i 】【m+l】from 【i
6、 】【 m+l】 =u;for(j=0;j9;j+)int p;p=from 【n】【j 】 ;from 【n】【 j 】 =from 【n+k 】【 j 】from 【 n+k 】【j 】 =p;for(i=0;i9;i+)for(j=0;j9;j+)to 【i 】【j 】 =from 【i 】【j 】for(i=0;i9;i+)for(j=0;j9;j+)to 【i 】【j 】 =from 【i 】【j 】if(level=0)p=1;r=2;else if(level=p=1; r=15;else if(level=p=1; r=20;else if(level=3)p=1; r=25;
7、else if(level=4)p=1; r=30;if(p=1)srand(time(NULL);/copyArray(Random,a);/ while(r-) /int i=rand()%9;void newgame(int a【9】【9】,bool flag 【9】【9】,int level)/设置难易程度fill(&flag 你应该懂地:int r,p=0;【0】【0】,&flag【8】【8】+1false); /就是把 flag 数组里面地每个成员都标记为/ r表示 挖去地空格。挖去操作,范立新 老在讲地,false ( 这步很关键 )随机数初始化 这里在打乱数组。
8、 随机地在某个地方 标记,用于挖空。int j=rand()%9;if(a 【 i 】【j 】 =0)r+;continue;/ 随机产生地 a【i】【j 】是 0 地话,重新循环次 if(a 【i】【j 】!=0)a【i 】【 j 】=0;flag 【i 】【j 】=true; / 把 a【i 】【j 】 弄为 0 再把这 个地方地 flag【 i 】【j 】标记为 trueelse / 否则,这个 level 不存在。coutInvalid Game levelendl; system (pause); /暂停void showArray(int a【 9】【9】,bool flag 【9
9、】【 9】) / 显示数独当前状态cout i- 1-1-1e ndl;int i,j;for(i=0;i9;i+)coutcol 【i 】| for(j=0;j9;j+)if(a 【i 】【j 】 !=0&flag【i 】【j 】 =false)coutsetw(3)a 【i 】【j 】 ;if(a 【i 】【j 】 =0)是用来标记 方框数 ; / setw 是 空格char col 【9】 =0,system (cls); /cout 011,2,3,4,5,6,7,8;清屏23 4 56 7 8 endl;cnt+; / cntcoutsetw(3)if(a 【i】【j 】 !
10、=0&flag 【i 】【 j 】 =true) / 原来是方框地 地方,现在输入了值了,那就如下这样。coutsetw(2)_a【i 】【j ;if(j+1)%3=0&j!=8) / 什么时候显示IcoutI;cout | endl;if(i+1)%3=0&i!=8)cout I-1-1-1e ndl;cout1-1-1-1e ndl;void ShowMenu()/ 显示菜单cout= cnt spaces left =endl;cout= SuDoKu Game ( 数独 ) =endl;cout=endl; cout Erow col value : Edit
11、cellendl;cout C row col : Clear cellendl;cout N Level : Restart with Level(0-4) endl; cout Q: Quit Gameendl;cout=endl;void FillCell(int a【 9【 9 ,bool flag 【 9【 9 , int r,int c,int value)/ 用于赋值地函数if(flag 【r 【 c =true) / true是方框地地方。int i,j;int k=0;/下面就把行和列地数与 value 值比较。 用与确认,输入地值是否正确for(j=0;j9;j+)if(a
12、 【r 】【j 】 =value)k=1;break;if(k=0)for(i=0;i9;i+)if(a 【 i 】【 c】 =value)k=1;break;if(k=0) / 如果比较后 完全正确地话,那么就把 值 里。a【r 】【c】 =value;elsecoutirregular valueendl; system (pause);void ClearCell(int a【9】【 9】 ,bool flag 【9】【9】,int r,int c) /输入地数地 函数, 即是返回 前个状态。if(flag【r 】【 c】=true)a【r 】【c】 =0;elsecoutFixed c
13、ell cannot be changed!s;int r,c,value;if(s 【0】=Q|s【0】=q&s.size()=1) /长度要是防止 输入 qwe 也会退出break;else if(s【0】 =N|s【0】 =n&s.size()=1)int level; cinlevel; newgame(a, flag, level);else if(s【0】 =E|s【 0】 =e&s.size()=1)cinrcvalue; FillCell(a, flag, r, c, value); cnt-;else if(s【0】 =C|s【0】 =c&s.size()=1)cinrc; ClearCell(a, flag, r, c);cnt+;int i,j,p=0;for(i=0;i9;i+)for(j=0;j9;j+)int main()gaoshoujiemian(); /formal(Random,a); /newgame(a, flag, 0); /个字符,if(a 【i 】【j 】 !=Random【i 】【j 】) / 如果 a 数组里面有 个 值没有和 random 原数组里面地值相等,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国音乐学院乐理一级试题及答案
- 云南省曲靖市罗平县一中2025年高二下物理期末调研试题含解析
- 云南省通海县第三中学2024-2025学年高二下生物期末复习检测试题含解析
- 浙江省杭州市桐庐县分水高中2025年生物高二第二学期期末达标检测模拟试题含解析
- 盐城市阜宁县高二上学期期中考试物理试题
- 餐饮店铺转让合同附带原店员劳动合同及社保转移
- 重大工程项目安全生产管理责任合同
- 地形测绘测量员聘请及质量保证合同
- 深圳博物馆选聘专业技术岗位人员考试真题2024
- 能源知识竞赛练习试题附答案
- 理论联系实际谈一谈你对高质量发展的理解参考答案二
- 医院检验科实验室生物安全程序文件SOP
- 工业硅技术安全操作规程
- 精密压力表计量标准技术报告(共16页)
- 消防工程项目样板区、样板间方案
- 彩盒类产品通用质量检验标准
- 导流明渠施工方案(共4页)
- 小学美术三年级下册第5课我们班级的标志PPT课件
- 儿童社会工作案例及分析PPT学习教案
- 均相液体机械搅拌夹套冷却反应器设计
- 某医院手术室洁净工程招标文件(完整版)
评论
0/150
提交评论