开发工具:
文件大小: 173kb
下载次数: 0
上传时间: 2009-04-21
详细说明: 一个简单的解数独的小程序 //***求数独的解,参数mod为0或1,time0为搜索开始时的时间,mod=0时仅检查Data1中数独是否有解,有解则抛出1,mod=1时求出所有解并输出*** { int i,j,im=-1,jm,min=10; int mark[10]; for(i=0;i<9;i++) { for(j=0;j<9;j++) { if(Data1[i][j]) //如果该位置有数据则跳过 { continue; } int c=Uncertainty(i,j,mark); //如果该位置为空则先求不确定度 if(c==0) //如果不确定度为0则表示该数独无解 { return; } if(cTIMEOUT) { throw(Solutions); } } return; } else //只给出一个解 { throw(1); //跳出所有递归调用,返回1 } } Uncertainty(im,jm,mark); //从不确定度最小的位置开始解 for(i=1;i<=9;i++) { if(mark[i]==0) { Data1[im][jm]=i; //对不确定度最小的位置尝试可能的赋值 Search(mod,time0); //递归调用 } } Data1[im][jm]=0; } void Csudoku::Set(int n) //***随机生成数独,参数n表示数独中待填元素个数*** { srand((unsigned)time(NULL)); int i,j,k; do { for(i=0;i<9;i++) //随机给每行的某一个位置赋值 { for(j=0;j<9;j++) { Data1[i][j]=0; } j=rand()%9; Data1[i][j]=i+1; } } while(!Solve(0)); //按照随机赋的值给出一个解 for(k=0;k0) { Data1[i][j]=0; k++; } } for(i=0;i<9;i++) //将生成的数独存入Data0数组 { for(j=0;j<9;j++) { Data0[i][j]=Data1[i][j]; } } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.