Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define ROW 9
- #define COL 9
- using namespace std;
- bool submatrixJudge(int matrix[ROW][COL], int startRow, int endRow, int startCol, int endCol){
- int examiner[10] = {0};
- bool sudoku = true;
- for (int i = startRow - 1; i <= endRow -1; i++){
- for (int j = startCol - 1; j <= endCol -1; j++) {
- examiner[matrix[i][j]] -= 1;
- if (examiner[matrix[i][j]] == -2) {
- sudoku = false;
- return sudoku;
- }
- }
- }
- return sudoku;
- }
- int main() {
- int matrix[ROW][COL];
- while(cin >> matrix[0][0]){
- // input the matrix
- for (int i = 0; i < ROW; i++) {
- for (int j = 0; j < COL; j++) {
- if (i == 0 && j == 0) {
- continue;
- }
- cin >> matrix[i][j];
- }
- }
- // get rid of the extra line
- char c[100];
- cin.getline(c,20);
- // 每列只能有1~9數字各出現一次
- try{
- for (int i = 0; i < ROW; i++) {
- int examiner[10] = {0};
- for (int j = 0; j < COL; j++) {
- examiner[(matrix[i][j])] -= 1;
- if (examiner[(matrix[i][j])] == -2) {
- throw 0;
- }// end if
- }// end for j
- }// end for
- }// end try
- catch(int){
- cout << "no" << endl;
- continue;
- }// end catch
- // 每行只能有1~9數字各出現一次
- try{
- for (int i = 0; i < COL; i++) {
- int examiner[10] = {0};
- for (int j = 0; j < ROW; j++) {
- examiner[(matrix[j][i])] -= 1;
- if (examiner[(matrix[j][i])] == -2) {
- throw 0;
- }// end if
- }// end for j
- }// end for
- }// end try
- catch(int){
- cout << "no" << endl;
- continue;
- }// end catch
- // subMatrix examining
- try{
- if (!(submatrixJudge(matrix, 1, 3, 1, 3))) throw 0;
- if (!(submatrixJudge(matrix, 1, 3, 4, 6))) throw 0;
- if (!(submatrixJudge(matrix, 1, 3, 7, 9))) throw 0;
- if (!(submatrixJudge(matrix, 4, 6, 1, 3))) throw 0;
- if (!(submatrixJudge(matrix, 4, 6, 4, 6))) throw 0;
- if (!(submatrixJudge(matrix, 4, 6, 7, 9))) throw 0;
- if (!(submatrixJudge(matrix, 7, 9, 1, 3))) throw 0;
- if (!(submatrixJudge(matrix, 7, 9, 4, 6))) throw 0;
- if (!(submatrixJudge(matrix, 7, 9, 7, 9))) throw 0;
- }//end try
- catch(int){
- cout << "no" << endl;
- continue;
- }// end catch
- cout << "yes" << endl;
- }// end while
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement