Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- bool hasDigitInLine(int grid[9][9], int y, int digit)
- {
- int x=0;
- for (x; x<9; x++)
- {
- if(grid[x][y]==digit) return true;
- }
- return false;
- }
- bool hasDigitInColumn(int grid[9][9], int x, int digit)
- {
- int y=0;
- for (y; y<9; y++)
- {
- if(grid[x][y]==digit) return true;
- }
- return false;
- }
- bool hasDigitInArea(int grid[9][9], int x, int y, int digit)
- {
- int i=0, j=0;
- i=x-(x%3);
- j=y-(y%3);
- for(x=i; x<i+3; x++)
- {
- for(y=j; y<j+3; y++)
- {
- if(grid[x][y]==digit) return true;
- }
- }
- return false;
- }
- void printGrid(int grid[9][9])
- {
- int i, j;
- printf("\n===========\n");
- for(i = 0; i < 9; i++)
- {
- for(j = 0; j < 9; j++)
- {
- printf("%d", grid[i][j]);
- if ((j == 2) || (j == 5)) printf("|");
- }
- printf("\n");
- if ((i == 2) || (i == 5)) printf("-----------\n");
- }
- printf("===========\n");
- }
- void solver(int grid[9][9], int x, int y)
- {
- int i;
- if(grid[x][y]==0)
- {
- for(i=1; i<10; i++)
- {
- if((!hasDigitInLine(grid,y,i)) && (!hasDigitInColumn(grid,x,i)) && (!hasDigitInArea(grid,x,y,i)))
- {
- grid[x][y]=i;
- printf("x=%d y=%d i=%d\n", x, y, i);
- x++;
- if(x==9)
- {
- x=0;
- y++;
- }
- if((x==0) && (y==9))
- {
- return;
- }*/
- //solver(grid,x,y);
- }
- }
- grid[x][y]=0;
- }
- else
- {
- x++;
- if(x==9)
- {
- x=0;
- y++;
- }
- //resolver(grid,x,y);
- return;
- }
- }
- int main()
- {
- int grid[9][9] = {
- 0,8,0, 7,9,0, 0,0,0,
- 0,0,0, 0,0,2, 0,9,0,
- 0,0,3, 0,0,8, 4,5,0,
- 0,0,8, 0,0,0, 0,0,1,
- 0,9,6, 0,0,0, 3,7,0,
- 3,0,0, 0,0,0, 2,0,0,
- 0,3,2, 5,0,0, 9,0,0,
- 0,4,0, 8,0,0, 0,0,0,
- 0,0,0, 0,6,4, 0,2,0
- };
- printGrid(grid);
- solver(grid,0,0);
- printGrid(grid);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement