Leetcode# 36 Valid Sudoku

来源:互联网 发布:js 面向对象 视频 编辑:程序博客网 时间:2024/05/01 12:19

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.


A partially filled sudoku which is valid.

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

Difficulty:Easy

遍历就好了,没什么难的。

bool isValidSudoku(vector<vector<char> >& board) {       int row[9],line[9],sq[9];       int temp;       for(int i = 0;i<9;i++)       {           memset(row,0,sizeof(row));           for(int j = 0;j<9;j++)           {               if(board[i][j]=='.')                continue;               temp = board[i][j]-'0';               row[temp-1]++;           }           for(int j = 0;j<9;j++)           {               if(row[j]>1)                return false;           }       }       for(int i = 0;i<9;i++)       {           memset(line,0,sizeof(line));           for(int j = 0;j<9;j++)           {               if(board[j][i]=='.')                continue;               temp = board[j][i]-'0';               line[temp-1]++;           }           for(int j = 0;j<9;j++)           {               if(line[j]>1)                return false;           }       }       int a = 0, b = 0,cou=0;       while(cou<9)       {memset(sq,0,sizeof(sq));           switch(cou){            case 0:                  a=0;b=0;                  break;            case 1:                  a=0;b=3;                  break;            case 2:                  a=0;b=6;                  break;            case 3:                  a=3;b=0;                  break;            case 4:                  a=3;b=3;                  break;            case 5:                  a=3;b=6;                  break;            case 6:                  a=6;b=0;                  break;            case 7:                  a=6;b=3;                  break;            case 8:                  a=6;b=6;                  break;           }       for(int i=a;i<a+3;i++)       {           for(int j=b;j<b+3;j++)           {               if(board[i][j]=='.')                continue;               temp = board[i][j]-'0';               sq[temp-1]++;           }       }       for(int j = 0;j<9;j++)           {               if(sq[j]>1)                return false;           }           cou++;       }       return true;    }


0 0
原创粉丝点击