ghorardim

SudokuSolver

Nov 1st, 2016
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.34 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class SudokuSolver {
  3.     public static int[][] grid = new int[10][10];
  4.     boolean isSafe(int num,int r,int c){
  5.     int i,j,rs,cs;
  6.     for(i=0; i<9; i++){
  7.         if(grid[r][i]==num){
  8.             return false;
  9.         }
  10.     }
  11.     for(i=0; i<9; i++){
  12.         if(grid[i][c]==num){
  13.             return false;
  14.         }
  15.     }
  16.     rs=r-r%3;
  17.     cs=c-c%3;
  18.     for(i=0; i<3; i++){
  19.         for(j=0; j<3; j++){
  20.             if(grid[rs+i][cs+j]==num){
  21.                 return false;
  22.             }
  23.         }
  24.     }
  25.     return true;
  26.     }
  27.     boolean solve(){
  28.         boolean flag;
  29.         flag = false;
  30.         int i,j = 0;
  31.         for(i=0; i<9; i++){
  32.            for(j=0; j<9; j++){
  33.             if(grid[i][j]==0){
  34.                 flag=true;
  35.                 break;
  36.             }
  37.         }
  38.         if(flag){
  39.             break;
  40.         }
  41.     }
  42.     int rval = i;
  43.     int cval = j;
  44.     if(!flag){
  45.         return true;
  46.     }
  47.     else{
  48.         for(i=1; i<=9; i++){
  49.             if(isSafe(i,rval,cval)){
  50.                 grid[rval][cval]=i;
  51.                 if(solve()){
  52.                     return true;
  53.                 }
  54.                 grid[rval][cval]=0;
  55.             }
  56.         }
  57.     }
  58.         return false;
  59.     }
  60.     public static void main(String[] args) {
  61.      Scanner sf = new Scanner(System.in);
  62.      SudokuSolver ob = new SudokuSolver();
  63.      int i,j,x,val,y,cnt;
  64.      for(i = 0; i<9;i++){
  65.                  for(j = 0; j<9;j++){
  66.                      grid[i][j]=0;
  67.                  }
  68.              }
  69.      while(true){
  70.          x = sf.nextInt();
  71.          if(x == 0){
  72.              cnt = 0;
  73.              for(i = 0; i<9;i++){
  74.                  for(j = 0; j<9;j++){
  75.                      if(grid[i][j] !=0){ cnt++;}
  76.                  }
  77.              }
  78.              if(cnt<18){
  79.                  System.out.println("you should input at lest 18 number");
  80.              }
  81.              else break;
  82.          }
  83.          else {
  84.              y = sf.nextInt(); val = sf.nextInt();
  85.              grid[--x][--y] = val;
  86.          }
  87.      }
  88.     if(ob.solve()){
  89.         for(i=0; i<9; i++){
  90.             for(j=0; j<9; j++){
  91.                 System.out.print(grid[i][j]+" ");
  92.             }
  93.             System.out.println();
  94.         }
  95.     }
  96.     else{
  97.         System.out.print("No solution exists\n");
  98.     }
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment