根據C語言改寫的java實現的,判定九宮格是否合法。記錄

請判定一個數獨是否有效。

該數獨可能只填充了部分數字,其中缺少的數字用 . 表示。

class Solution {
    /**
      * @param board: the board
        @return: wether the Sudoku is valid
      */
    public boolean isValidSudoku(char[][] board) {
        int[] rowValid= new int[10];//用於判斷某一行是否合法
        int[] columnValid= new int[10];//用於判斷某一列是否合法
        int[] subBoardValid =new int[10];//用於判斷某一個九宮格是否合法
        for(int i = 0; i < 9; i++)
        {
          setZero(rowValid, 10);
          setZero(columnValid, 10);
          setZero(subBoardValid, 10);
          for(int j = 0; j < 9; j++)
          {
              if(!checkValid(rowValid, board[i][j]-'0') ||
                 !checkValid(columnValid, board[j][i]-'0') ||
                 !checkValid(subBoardValid, board[3*(i/3) + j/3][3*(i%3) + j%3]-'0'))
                 return false;
          }
        }
        return true;
      }
      void setZero(int[] record,int len){
          for(int i=0;i<len;i++){
              record[i]=0;
          }
      }
      boolean checkValid(int[] vec, int val)
      {
        if(val < 0)return true;//對應的是字符‘.’
        if(vec[val] == 1)return false;
        vec[val] = 1;
        return true;
      }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章