天天看點

LeetCode - 36. Valid Sudoku36. Valid Sudoku  Problem's Link

 ----------------------------------------------------------------------------

Mean: 

給定一個數獨,判斷這個數獨是否合法.

analyse:

略.

Time complexity: O(N)

view code

/**

* -----------------------------------------------------------------

* Copyright (c) 2016 crazyacking.All rights reserved.

*       Author: crazyacking

*       Date  : 2016-03-02-18.28

*/

#include <queue>

#include <cstdio>

#include <set>

#include <string>

#include <stack>

#include <cmath>

#include <climits>

#include <map>

#include <cstdlib>

#include <iostream>

#include <vector>

#include <algorithm>

#include <cstring>

using namespace std;

typedef long long(LL);

typedef unsigned long long(ULL);

const double eps(1e-8);

class Solution

{

public:

   bool isValidSudoku(vector<vector<char>>& board)

   {

       int row=board.size();

       int col=board[0].size();

       set<int> se;

       // -------

       for(int i=0;i<row;++i)

       {

           se.clear();

           for(int j=0;j<col;++j)

               if(board[i][j]!='.')

               {

                   int k=board[i][j]-'0';

                   if(se.count(k))

                       return false;

                   se.insert(k);

               }

       }

       for(int i=0;i<col;++i)

           for(int j=0;j<row;++j)

               if(board[j][i]!='.')

                   int k=board[j][i]-'0';

       //*****

       for(int i=0;i<row-2;i+=3)

           for(int j=0;j<col-2;j+=3)

               if(!checkBoard(board,i,j))

                   return false;

       return true;

   }

   bool checkBoard(vector<vector<char>>& board,int bi,int bj)

       for(int i=bi;i<bi+3;++i)

           for(int j=bj;j<bj+3;++j)

           {

           }

};

int main()

   freopen("H:\\Code_Fantasy\\in.txt","r",stdin);

   vector<vector<char>> ve;

   string s;

   while(cin>>s)

       vector<char> tempVe;

       for(int i=0;s[i];++i)

           tempVe.push_back(s[i]);

       ve.push_back(tempVe);

   Solution solution;

   bool ans=solution.isValidSudoku(ve);

   puts(ans?"true":"false");

   return 0;

}

/*

繼續閱讀