数独题 HDU - 1426
生活随笔
收集整理的這篇文章主要介紹了
数独题 HDU - 1426
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意:給你一個數(shù)獨,讓你求出它的解
?
這個題是運用DFS的(很好的一道題? 可以提高自己的思維能力)
哈理工也有一道數(shù)獨題----? ? ?數(shù)獨題
#include<set> #include<map> #include<queue> #include<stack> #include<bitset> #include<math.h> #include<string> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define pi acos(-1) #define close ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); using namespace std; typedef long long ll; const int MAX_N=1000000+50; const int INF=0x3f3f3f3f; const double EPS = 1e-10; ll mod = 1e9+7;bool flag ; int mapp[11][11];bool Check(int num,int x){int hang = num / 9;int lie = num % 9;for(int i = 0; i < 9; i++){if(mapp[hang][i] == x){return false;}}for(int i = 0; i < 9; i++){if(mapp[i][lie] == x){return false;}}int fhang = (hang / 3) * 3;int flie = (lie / 3) * 3;for(int i = fhang; i < fhang + 3; i++){for(int j = flie; j < flie + 3; j++){if(mapp[i][j] == x){return false;}}}return true; }void dfs(int num){if(num > 80 || flag){flag = true;return ;}int hang = num / 9;int lie = num % 9;if(mapp[hang][lie] != 0){dfs(num + 1);if(flag) return;}else{for(int i = 1; i <= 9; i++){if(Check(num,i)){mapp[hang][lie] = i;dfs(num + 1);if(flag) return;mapp[hang][lie] = 0;}}} }int main(){char s[5];while(~scanf("%s",s)){mapp[0][0] = (s[0] == '?'?0:s[0] - '0');for(int i = 1; i < 9; i++){scanf("%s",s);mapp[0][i] = (s[0] == '?'?0:s[0] - '0');}for(int i = 1; i < 9; i++){for(int j = 0; j < 9; j++){scanf("%s",s);mapp[i][j] = (s[0] == '?'?0:s[0] - '0');}}if(flag) printf("\n"); //注意 沒有這個會發(fā)生PE錯誤 flag = false;dfs(0);for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){if(j == 8) printf("%d\n",mapp[i][j]);else printf("%d ",mapp[i][j]);}}}return 0; }/*********************####....#.#..###.....##....###.......###### ### ###........... #...# #...###*####### #.#.# #.#.#####*******###### #.#.# #.#.#...#***.****.*###.... #...# #...#....**********##..... ### ###....**** *****....#### ########## ###### ############################################################## #...#......#.##...#......#.##...#......#.##------------------# ###########################################------------------# #..#....#....##..#....#....##..#....#....##################### ########################################## #----------# #.....#......##.....#......##.....#......# #----------# ########################################## #----------# #.#..#....#..##.#..#....#..##.#..#....#..# #----------# ########################################## ############ */?
總結(jié)
以上是生活随笔為你收集整理的数独题 HDU - 1426的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Live Writer
- 下一篇: win10设置宽带拨号断线重连