#include<iostream>
#include<cmath>
// gia su co quan hau dat tai vi tri (x1,y1), ta muon dat them con hau ke tiep
// tai vi tri (x2,y2), lam the nao ?
using namespace std;
int a[8] ; // luu vet chuong trinh
bool OK(int x2, int y2 ){ // k tra vi tri (x2, y2) co dat dc queen ?
for(int i = 1; i< x2; i++ )
//a[i] == y2 => columns are same
//|i - x2| == |a[i] - y2| => in diagonals.
if(a[i] == y2|| abs(i-x2) == abs(a[i] - y2) ) return false;
return true;
}
void xuat(int n ){
for(int i=1; i<= n; i++ )
cout<<" " <<a[i];
cout<< endl;
}
void Try(int i, int n ){
for(int j = 1; j<= n; j++ )
if(OK(i,j)) // queen tai vi tri hang i dat vao cot thu j
{
a[i] = j;
if(i==n)
xuat(n);
Try(i+1,n);
}
}
int main(){
int n = 8;
Try(1,n);
return 0;
}
mn cho mình hỏi sao khi gọi hàm Try(i+1,n) thì nó in được như trong ảnh vậy.mình biết nó là quay lui nhưng vần không hiểu cơ chế của nó lắm.mn giải thích giúp mình được không ạ.
đây là bài 8 con hậu ạ.
thanks

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?