Valid Sudoku

来源:互联网 发布:形容网络喷子 编辑:程序博客网 时间:2024/06/10 19:32
 题目描述: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 '.'.
   (确定数独是否有效,根据:数独谜题-规则。
    数独板可以部分填充,其中空单元格充满字符。)
   Note:A valid Sudoku board (partially filled) is not necessarily solvable.
   Only the filled cells need to be validated.
   (一个有效的数独板(部分填充)不一定是可解的。

     只完整的数独板需要去验证。)

PS:这个题并不是让你去解数独,而是判断一个数独合法不合法。

数独规则:http://sudoku.com.au/TheRules.aspx

public class Valid_Sudoku {public static String board[][]=new String[9][9];//数独面板public static ArrayList al=new ArrayList();//用于判断有没有一样的数public static boolean judge(){//检查行是否合格for(int i=0;i<9;i++){al.clear();for(int j=0;j<9;j++){if(al.contains(board[i][j])&&!board[i][j].equals(".")){return false;}else{if(!board[i][j].equals("."))al.add(board[i][j]);}}}//检查列是否合格for(int i=0;i<9;i++){al.clear();for(int j=0;j<9;j++){if(al.contains(board[j][i])&&!board[j][i].equals(".")){return false;}else{if(!board[j][i].equals("."))al.add(board[j][i]);}}}//检查九宫格内时候否合格for(int partx=0;partx<3;partx++){for(int party=0;party<3;party++){al.clear();for(int i=partx*3;i<partx*3+3;i++){for(int j=party*3;j<party*3+3;j++){if(al.contains(board[i][j])&&!board[i][j].equals(".")){return false;}else{if(!board[i][j].equals("."))al.add(board[i][j]);}}}}}return true;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);for(int i=0;i<9;i++){for(int j=0;j<9;j++){String data=sc.next();board[i][j]=data;}}System.out.println(judge());}}