時間比較倉促,未優化。大牛看客,勿
笑話。當然有好的建議,我洗耳恭聽。若有時間再用mfc寫乙個介面。
好了,廢話不多說,**如下:
#include
using namespace std;
//可選數字
int candidate = ;
//標記這個空格是否為原始資料
int g_a[9][9] = ;
//列印函式
void print( int (*a)[9] )
cout << endl;
}cout << endl;
}//判斷可以放哪些數字
void confirmcandidate( int (*a)[9], int i, int j )
for( int line = 0; line < 9; line++ )
for( int line = i/3*3; line < i/3*3+3; line++ )
}//標記每個空格位置
void totalnumbers( int (*a)[9], int i, int j )}}
//判斷所填數字是否正確
bool judgevalue( int (*a)[9],int i, int j )
//同一列有無重複數字
for( int line = 0; line < 9; line++ )
//乙個3*3的方格內有無重複數字
for( int line = i/3*3; line < i/3*3+3; line++ )
return true;
}//判斷是否成功
bool success( int(*a)[9], int i, int j )
else
}else if( c == 8 && candidate[c] <= a[line][colm] )
else set_colm--;
}return success( a, line - 1, set_colm);
}else
else colm--;
}return success( a ,line, colm-1 );}}
}}}return true;}
int main(),,
,,,,
,,};//test
/*int a[9][9] = ,,,
,,,,
,};*/ totalnumbers( a, 9, 9 );
success( a, 0, 0 );
print(a);
} 本文由
解數獨演算法 C 實現
時間比較倉促,未優化。大牛看客,勿笑話。當然有好的建議,我洗耳恭聽。若有時間再用mfc寫乙個介面。好了,廢話不多說,如下 include using namespace std 可選數字 int candidate 標記這個空格是否為原始資料 int g a 9 9 列印函式 void print ...
C 演算法 解數獨 條件遞迴
leetcode相關c 演算法解答 編寫乙個程式,通過已填充的空格來解決數獨問題。乙個數獨的解法需遵循如下規則 數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。首先提取當前有的元素,放在三個vector 然後在使...
回溯演算法 解數獨
假設 判斷 假設 class solution def solve self,arr self.helper arr,0 defhelper self,arr,index if index 81 print arr return else if arr index 0 0代表需要填充資料 for i...