临水整乌纱。两鬓苍华。故乡心事在天涯。——吴琚《浪淘沙·岸柳可藏鸦》 楠少博客 阅读文章 C++ 数独游戏 楠少 2020-01-13 6666666 8888888 Cpp 数据结构与算法 摘要C++ 数独游戏 ## C++ 数独游戏 直接上代码: ```cpp // 数独 sudoku #include <iostream> using namespace std; int P[9][9]; bool flag = false; // 处理输入 void input(){ char t; cout << "输入棋盘,空用 0 表示\n"; for(int i = 0; i < 9; i ++){ for(int j = 0; j < 9; j ++){ cin >> t; P[i][j] = t - '0'; } } } // 处理输出 void output(){ for(int i = 0; i < 9; i ++){ for(int j = 0; j < 9; j ++){ if(P[i][j]){ cout << P[i][j]; }else{ cout << " "; } if(j%3 == 2) cout << " "; } if(i%3 == 2) cout << endl; cout << endl; } } // 判断即将放入的 是否符合条件 bool check(int n, int num){ // 行 for(int i = 0; i < 9; i ++){ if(P[n/9][i] == num){ return false; } } // 列 for(int i = 0; i < 9; i ++){ if(P[i][n%9] == num){ return false; } } // 宫 int x = n / 9 / 3 * 3; int y = n % 9 / 3 * 3; for(int i = 0; i < 3; i ++){ for(int j = 0; j < 3; j ++){ if(P[x+i][y+j] == num){ return false; } } } return true; } // [n/9][n%9] void dfs(int n){ // 成功 if(n > 80){ flag = true; return; } int x = n/9, y = n%9; // 有值 跳过 if(P[x][y]){ dfs(n+1); return; } // 遍历 for(int i = 1; i <= 9; i ++){ // 判断 if(check(n, i)){ // 判断成功 赋值 P[x][y] = i; dfs(n+1); // 退出时判断是否完成 完成时退出 if(flag){ return; } // 未完成 重置棋盘 P[x][y] = 0; } } } int main(){ input(); cout << endl << endl; dfs(0); output(); return 0; } /* 测试用例 170004000 360810054 008050109 007035048 000000270 000008601 000060080 700000000 000403016 */ ``` ## 测试用例子结果 ![](https://blog.nanshaobit.top/static/upload/bswct2vys4.jpg) ## 百度百科 世界最难数独 答案秒出, 没有什么是暴力解决不了的~ ![](https://blog.nanshaobit.top/static/upload/6sfiu1ds28.jpg) 上一篇:分享图片。 下一篇:楠少音乐盒(PC端)突破校园网限制 文章评论 [ 聊聊技术 聊聊自己 ] 在巴甫洛夫条件反射 试验中:给定一条狗,每次摇铃后喂食,足够次数后,狗则听到铃声将会习惯性的分泌唾液,由此引发对铃声的依恋。延伸到实际,给定一个喜欢的妹子,每次见面赠与巴甫洛夫式 的礼品或者零食,由此引发妹子的依恋。引入薛定谔的猫 理论,在未表白前,妹子与自己一直处于一种“概率云”的状态,一旦表白则“概率云”将消失成为实际。在 巴甫洛夫式 后且未表白前,自己与妹子的关系为“既是恋人又不是恋人”的矛盾体。返回巴甫洛夫式 试验中,在妹纸形成足够的依恋过后,则可以打破薛定谔 “概率云”的状态。这个谜一样的自己,这一刻 薛定谔 附体,带着量子论般深沉的哀愁,让她从此不能自拔! 自此创作 巴甫洛夫薛定谔把妹法,深藏功与名。