Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class SudokuSolver {
- public static int[][] grid = new int[10][10];
- boolean isSafe(int num,int r,int c){
- int i,j,rs,cs;
- for(i=0; i<9; i++){
- if(grid[r][i]==num){
- return false;
- }
- }
- for(i=0; i<9; i++){
- if(grid[i][c]==num){
- return false;
- }
- }
- rs=r-r%3;
- cs=c-c%3;
- for(i=0; i<3; i++){
- for(j=0; j<3; j++){
- if(grid[rs+i][cs+j]==num){
- return false;
- }
- }
- }
- return true;
- }
- boolean solve(){
- boolean flag;
- flag = false;
- int i,j = 0;
- for(i=0; i<9; i++){
- for(j=0; j<9; j++){
- if(grid[i][j]==0){
- flag=true;
- break;
- }
- }
- if(flag){
- break;
- }
- }
- int rval = i;
- int cval = j;
- if(!flag){
- return true;
- }
- else{
- for(i=1; i<=9; i++){
- if(isSafe(i,rval,cval)){
- grid[rval][cval]=i;
- if(solve()){
- return true;
- }
- grid[rval][cval]=0;
- }
- }
- }
- return false;
- }
- public static void main(String[] args) {
- Scanner sf = new Scanner(System.in);
- SudokuSolver ob = new SudokuSolver();
- int i,j,x,val,y,cnt;
- for(i = 0; i<9;i++){
- for(j = 0; j<9;j++){
- grid[i][j]=0;
- }
- }
- while(true){
- x = sf.nextInt();
- if(x == 0){
- cnt = 0;
- for(i = 0; i<9;i++){
- for(j = 0; j<9;j++){
- if(grid[i][j] !=0){ cnt++;}
- }
- }
- if(cnt<18){
- System.out.println("you should input at lest 18 number");
- }
- else break;
- }
- else {
- y = sf.nextInt(); val = sf.nextInt();
- grid[--x][--y] = val;
- }
- }
- if(ob.solve()){
- for(i=0; i<9; i++){
- for(j=0; j<9; j++){
- System.out.print(grid[i][j]+" ");
- }
- System.out.println();
- }
- }
- else{
- System.out.print("No solution exists\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment