Berikut contoh programnya.
#include <stdio.h>
int sudoku[9][9]; //array yang menyimpan data sudoku
void solvesudoku(int, int);
int checkrow(int row, int num)
{
//ini untuk memeriksa apakah kita bisa memasukkan num di row sudoku atau tidak
int column;
for(column=0;column<9;column++)
if(sudoku[row][column]==num)
return 0; //jika num yang ditemukan sudah ada return 0
return 1; //jika num tidak ditemukan return 1
}
int checkcolumn(int column, int num)
{
//ni untuk memeriksa apakah kita bisa memasukkan num di column sudoku atau tidak
int row;
for(row=0;row<9;row++)
if(sudoku[row][column]==num)
return 0; //jika num yang ditemukan sudah ada return 0
return 1; //jika num tidak ditemukan return 1
}
int checkgrid(int row, int column, int num)
{
//fungsi ini memeriksa apakah kita bisa memasukkan num digrid 3*3 atau tidak
//kita set row dan column 3*3
row=(row/3)*3;
column=(column/3)*3;
int r, c;
for(r=0;r<3;r++)
for(c=0;c<3;c++)
if(sudoku[row+r][column+c]==num)
return 0; //jika num yang ditemukan sudah ada return 0
return 1; //jika num tidak ditemukan return 1
}
void navigate(int row, int column)
{
if(column<8)
solvesudoku(row, column+1);
else
solvesudoku(row+1, 0);
}
void display()
{
//fungsi ini untuk menampilkan hasil penyelesaian sudoku
int row, column;
printf("\nHasil Penyelesaian\n");
for(row=0;row<9;row++)
{
for(column=0;column<9;column++)
printf("%d ", sudoku[row][column]);
printf("\n");
}
}
void solvesudoku(int row, int column)
{
if(row>8) //jika jumlah barisnya sudah lebih dari 8 maka kita sudah mengisi semua dan dapat menyelesaikan sudoku
display();
if(sudoku[row][column]!=0)
navigate(row, column); //jika nilai yang terisi bukan 0 kita lanjutkan
else
{
int ctr; //ini counter untuk memeriksa apakah 1 sampai 9 bisa terisi atau tidak
for(ctr=1;ctr<=9;ctr++)
{
//kita check row, column, dan grid
if((checkrow(row, ctr)==1)&&(checkcolumn(column, ctr)==1)&&(checkgrid(row, column, ctr)==1))
{
sudoku[row][column]=ctr;
navigate(row, column);
}
}
sudoku[row][column]=0; //tidak ditemukan num yang benar sehingga kembali ke awal
}
}
int main()
{
int row, column;
printf("Masukkan sudoku dan berikan 0 untuk hasil yang tidak diketahui\n");
for(row=0;row<9;row++)
for(column=0;column<9;column++)
scanf("%d", &sudoku[row][column]);
solvesudoku(0, 0); //kita mulai menyelesaikan sudoku
return 0;
}
Maafnih jika program yang saya contohkan tidak sesuai dan terlalu susah, maklumlah masih belajar juga, ini hasil outputnya.Semangat terus ya, jangan pelit sama ilmu, dan jangan lupa like, comment, dan subscribe. Terima kasih.
Dilarang berkomentar SARA, dan menyebarkan HOAX. Kami akan menghargai bila kalian sopan. Terima kasih.