红桃J

用心写好每行完美的代码,远比写一堆更有价值

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

代码:

 1 #include<iostream>
 2 #include<vector>
 3 
 4 using namespace std;
 5 
 6 int length = 9;
 7 
 8 bool isValidSudoku(vector<vector<char>>& board) 
 9 {
10     int flag[9];
11     memset(flag, 0, sizeof(flag)*length);
12     //
13     for (int j = 0; j < length; j++)
14     {
15         for (int i = 0; i < length; i++)
16         {
17             if (board[i][j] != '.')
18             {
19                 if (flag[board[i][j] - '1'] == 1)
20                     return false;
21                 else
22                     flag[board[i][j] - '1'] = 1;
23             }
24         }
25         memset(flag, 0, sizeof(flag)*length);
26     }
27     memset(flag, 0, sizeof(flag)*length);
28     for (int i = 0; i < length; i++)
29     {
30         for (int j = 0; j < length; j++)
31         {
32             if (board[i][j] != '.')
33             {
34                 if (flag[board[i][j] - '1'] == 1)
35                     return false;
36                 else
37                     flag[board[i][j] - '1'] = 1;
38             }
39         }
40         memset(flag, 0, sizeof(flag)*length);
41     }
42     memset(flag, sizeof(flag), 0);
43     for (int i0 = 0; i0 < length; i0+=3)
44     {
45         for (int j0 = 0; j0 < length; j0+=3)
46         {
47             for (int i = i0; i < i+3; i++)
48             {
49                 for (int j = j0; j < j+3; j++)
50                 {
51                     if (board[i][j] != '.')
52                     {
53                         if (flag[board[i][j] - '1'] == 1)
54                             return false;
55                         else
56                             flag[board[i][j] - '1'] = 1;
57                     }
58                 }
59             }
60             memset(flag, 0, sizeof(flag)*length);
61         }
62     }
63     return true;
64 }
65 
66 int main()
67 {
68     vector<vector<char>> a = 
69     {
70         { '5', '3', '.', '.', '7', '.', '.', '.', '.' },
71         { '6', '.', '.', '1', '9', '5', '.', '.', '.' },
72         { '.', '9', '8', '.', '.', '.', '.', '6', '.' },
73         { '8', '.', '.', '.', '6', '.', '.', '.', '3' },
74         { '4', '.', '.', '8', '.', '3', '.', '.', '1' },
75         { '7', '.', '.', '.', '2', '.', '.', '.', '6' },
76         { '.', '6', '.', '.', '.', '.', '2', '8', '.' },
77         { '.', '.', '.', '4', '1', '9', '.', '.', '5' },
78         { '.', '.', '.', '.', '8', '.', '.', '7', '9' },
79     };
80     cout << isValidSudoku(a) << endl;
81     return 0;
82 }

 

posted on 2015-05-11 09:34  红桃J  阅读(158)  评论(0编辑  收藏  举报