e đang code bài toán sudoku,thuật toán thì đúng nhưng sao vẫn lỗi?ai giúp với,…đặc biệt cho in ra ngoài thì nên in ra kiểu j ?html?
mở rộng: liệu có thể làm đc tổng quát bài sudoku vs đã điền sẵn 1 vài ô?
e đã sửa lại code ,ghi chú rõ các hàm,…mong mọi người xem giúp
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int v,i,j,h,k,h1,h2,h3,k1,k2,k3;
int x[100][100];
int print() //hàm the hien in ra ket qua khi da viet du 81 so tren bang suodku
{
cout<<"??????"; // mong được viết hộ hàm in ra kiểu html hiện kết quả là bảng 9x9
}
int check(v,i,j) //ham kiem tra xem dieu kien tren bang sudoku
{
for(k=0;k<=i;k++) //dieu kien khac nhau theo cot
{
if(x[k][j]==v) return 0;
}
for(h=0;h<=j;h++) //dieu kien khac nhau theo cot
{
if(x[i][h]==v) return 0;
}
h1=i/3; h2=i-3*h1;
k1=j/3; k2=j-3*k1;
for(h3=0;h3 <=2;h3++) // điều kiện để 2 ô thuộc cùng khoảng 9 ô con khác nhau?ai chơi sudoku sẽ hiểu
{
for(k3=0;k3<=2;k3++)
{
if((h3<h2)||((h3==h2)&&(k3<k2)))
{
if(x[h1*3+h3,k1*3+k3]==v)
return 0;
else return 1;
}
}
}return 1;
}
int TRY(i,j) // hàm đệ qui quay lui
{
for(v=1;v<=9;v++)
{
if(check(v,i,j))
{
x[i][j]=v;
if(i=8&&j=8) print();
else {
if(j<8) TRY(i,j+1);
else TRY(i+1,1);
}
}
}
}
int main()
{
int n;
cout << "nhap vao gia tri n="; cin>>n;
TRY(0,0);
return 0;
}