Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int board[10][10]={},mark_line[10][10]={},mark_column[10][10]={},mark_grid[10][10]={},count=1;
- int grid(int i, int j)
- {
- if (i<4)
- {
- if (j<4)
- return 1;
- else if (j<7)
- return 2;
- else
- return 3;
- }
- else if (i<7)
- {
- if (j<4)
- return 4;
- else if (j<7)
- return 5;
- else
- return 6;
- }
- else
- {
- if (j<4)
- return 7;
- else if (j<7)
- return 8;
- else
- return 9;
- }
- }
- int duyet()
- {
- int i,j;
- for (i=1;i<=9;i++)
- for (j=1;j<=9;j++)
- if (board[i][j]>=0 && board[i][j]<10)
- {
- if (board[i][j]>0)
- {
- mark_line[i][board[i][j]]++;
- mark_column[j][board[i][j]]++;
- mark_grid[grid(i,j)][board[i][j]]++;
- if (mark_line[i][board[i][j]]*mark_column[j][board[i][j]]*mark_grid[grid(i,j)][board[i][j]]>1)
- return 1;
- }
- }
- else
- return 1;
- return 0;
- }
- void in(int i, int j)
- {
- mark_line[i][board[i][j]]++;
- mark_column[j][board[i][j]]++;
- mark_grid[grid(i,j)][board[i][j]]++;
- }
- void out(int i, int j)
- {
- mark_line[i][board[i][j]]--;
- mark_column[j][board[i][j]]--;
- mark_grid[grid(i,j)][board[i][j]]--;
- }
- void PRINT_RESULT()
- {
- int i,j;
- if (count==1)
- printf("Loi giai: \n");
- printf("%d. \n",count++);
- for (i=1;i<=9;i++)
- {
- for (j=1;j<=9;j++)
- {
- printf("%d ",board[i][j]);
- if (j%3==0)
- printf(" ");
- }
- printf("\n");
- if (i%3==0)
- printf("\n");
- }
- }
- int search(int i0, int j0)
- {
- int i=i0,j=j0,k;
- for (;i<=9;i++,j=1)
- for (;j<=9;j++)
- if (board[i][j]==0)
- {
- for (k=1;k<=9;k++)
- if (mark_line[i][k]==0 && mark_column[j][k]==0 && mark_grid[grid(i,j)][k]==0)
- {
- board[i][j]=k;
- in(i,j);
- if (search(i,j+1)==0)
- return 0;
- out(i,j);
- board[i][j]=0;
- }
- return 1;
- }
- if (i==10)
- {
- PRINT_RESULT();
- int choice;
- printf("Ban co muon tiep tuc tim loi giai khac? \n1. Co 2. Khong \nChoice: ");
- scanf("%d",&choice);
- if (choice==2)
- return 0;
- return 1;
- }
- }
- int main()
- {
- int i,j;
- printf("SUDOKU \nNhap vao bai toan theo thu tu tu trai sang phai va tren xuong duoi, \nnhap 0 neu trong. \n");
- printf("Input: ");
- for (i=1;i<=9;i++)
- for (j=1;j<=9;j++)
- scanf("%d",&board[i][j]);
- if (duyet()==0)
- if (search(1,1)==1)
- printf("Khong con dap so nao phu hop! \n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment