我已經用C編寫了這個數獨求解器,但它不能正常工作,有什麼幫助嗎?C中的數獨求解器無法正常工作
隨着作爲
1 0 3 4 0 0 7 0 9
0 5 6 0 8 9 0 2 3
0 8 9 1 0 3 4 0 6
2 1 4 0 6 5 0 9 7
3 0 0 8 0 7 0 1 4
8 0 7 0 1 4 0 6 5
0 3 1 0 4 0 9 7 8
6 4 0 9 7 0 5 3 1
0 7 8 0 0 1 0 4 2
樣本輸入,它使輸出
1 2 3 4 5 6 7 8 9
7 5 6 0 8 9 1 2 3
0 8 9 1 2 3 4 5 6
2 1 4 3 6 5 8 9 7
3 9 5 8 0 7 2 1 4
8 0 7 2 1 4 3 6 5
5 3 1 6 4 2 9 7 8
6 4 2 9 7 8 5 3 1
9 7 8 5 3 1 6 4 2
任何想法出了什麼問題?
#include<stdio.h>
int sudoku[9][9];
int check(int sudoku[][9], int row, int col, int sol)
{
//checking in the grid
int row_grid = (row/3) * 3;
int col_grid = (col/3) * 3;
int i, j;
for(i=0; i<9; ++i)
{
if (sudoku[row][i] == sol)
return 0;
if (sudoku[i][col] == sol)
return 0;
if (sudoku[row_grid + (i%3)][col_grid + (i/3)] == sol)
return 0;
}
return 1;
}
int main(void)
{
int i,j,k;
printf("enter the sudoku and enter 0 for unknown entries \n");
for(i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
scanf("%d",&sudoku[i][j]);
}
}
for(i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
if(sudoku[i][j]==0)
{
for (k=1;k<=9;k++)
{
if(check(sudoku,i,j,k)==1)
{
sudoku[i][j] = k;
}
}
}
}
}
printf("solved sudoku \n");
for(i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
printf("%d ", sudoku[i][j]);
}
printf("\n");
}
return 0;
}
您是否試圖自己調試代碼? – alex
是的,找不到線索。這就是爲什麼我在這裏發佈 – goromlagche
顯示你的意圖,邏輯和你期望的輸出。 – moeCake