一秒内破解“最难数独”

来源:互联网 发布:3d家具软件 编辑:程序博客网 时间:2024/05/22 04:48

 网上看到一则新闻,江苏69岁农民3天破解“世界最难数独”,我也写了个程序破解该数独。

原报道截图如下:

原题如下:

 

运行结果:

 

 

#include<iostream> #include<ctime>  using namespace std;int p[9][9];                  //存放九宫格数据int z[][9] = {                //分为九小宫{0,0,0,1,1,1,2,2,2},{0,0,0,1,1,1,2,2,2},{0,0,0,1,1,1,2,2,2},{3,3,3,4,4,4,5,5,5},{3,3,3,4,4,4,5,5,5},{3,3,3,4,4,4,5,5,5},{6,6,6,7,7,7,8,8,8},{6,6,6,7,7,7,8,8,8},{6,6,6,7,7,7,8,8,8},};int r[9][10];               //r[i][j]为1时,第i行数字j(1~9)已放置int c[9][10];               //c[m][n]为1时,第m列数字n(1~9)已放置int d[9][10];               //d[x][y]为1时,第x宫数字y(1~9)已放置int count;                  //解的个数void input();void output();void init();void search(int);int main(){clock_t clockBegin, clockEnd;  //用clock()来计时 毫秒 cout<<"输入:"<<endl;input();cout<<"输出:"<<endl;clockBegin = clock();          //计时开始 init();search(0);clockEnd = clock();            //计时结束 cout<<"计算用时"<< clockEnd - clockBegin<<"ms"<<endl;  return 0;}void output(){int i,j;for(i = 0; i < 9; i++){for(j = 0; j < 9; j++){cout<<p[i][j]<<' ';}cout<<endl;}count++;}void init(){int i,j,x;for(i = 0; i < 9; i++){for(j = 0; j < 9; j++){x = p[i][j];if(x == 0)continue;else{r[i][x] = 1;c[j][x] = 1;d[z[i][j]][x] = 1;}}}}void search(int cur){if(count == 1) return;else if(cur == 81)              //递归边界output();else{int i,j,k,l;i = cur / 9;                //行号j = cur % 9;                //列号if(p[i][j] != 0)search(cur + 1);else{l = z[i][j];for(k = 1; k <= 9; k++){if(r[i][k]||c[j][k]||d[l][k])   //检查行、列和宫内是否冲突continue;p[i][j] = k;r[i][k] = c[j][k] = d[l][k] = 1; //修改全局变量search(cur + 1);p[i][j] = r[i][k] = c[j][k] = d[l][k] =0;}}}}void input(){int i,j;for(i = 0; i < 9; i++)for(j = 0; j < 9;j++)cin>>p[i][j];}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果系统软件删了还是出现怎么办 钉钉检测到作弊怎么办 电脑麦说话声音小怎么办 穿越火线麦克风有杂音怎么办 手闲不住就抠东西怎么办 大便堵在肛门口怎么办 在外地流量不够用怎么办 电脑键盘数字键没反应怎么办 音响音量键坏了怎么办 摩托罗拉移动电话通话没声音怎么办 摩托罗拉对讲机充电座坏了怎么办 手机导航键太灵敏怎么办 经侦大队不立案怎么办 槐茂酱菜太咸怎么办 法院执法局执法不公怎么办 搞养殖卖不出去怎么办 孔雀吃了蚯蚓该怎么办 多肉幼苗长徒了怎么办 小鸵鸟嘴断了怎么办 武汉早谢怎么办博大直上 威猛先生伤手了怎么办 嗓子眼边条线下边长块肉怎么办 线长在肉里怎么办 北京买车没有号怎么办 租的车处理违章怎么办 以租代购车不要怎么办 订车的合同掉了怎么办 买车合同丢了怎么办 车的证件都丢了怎么办 桃树直立的徒长枝怎么办 月季花长了独枝怎么办? 6岁半B超没子宫怎么办 学生学籍号和身份证号不一致怎么办 学生学籍号和身份证号不一样怎么办 领导交代的任务完不成怎么办 洗衣机里的衣服有味道怎么办 新买的洗衣机有味道怎么办 模拟工业装置没有数据验证怎么办 民办学校的指标生学费怎么办 孩子上初中后成绩不好怎么办 孩子考最后一名怎么办