01/10/2018, 08:34
Hỏi về thuật toán BackTracking
#include <stdio.h>
int n;
bool used[123];
int a[123];
void show(){
int i;
for (i=1; i<=n; i++)
printf("%d ", a[i]);
printf("
");
}
void back(int pos){
int i;
if (pos==n+1) { show() ; return ; }
for (i=1; i<=n; i++)
if (!used[i]){
a[pos]=i;
used[i]=true;
back(pos+1);
used[i]=false;
}
}
main(){
scanf("%d", &n);
back(1);
}
Đây là thuật toán Backtracking thầy e cho mẫu trên lớp nhưng em chưa hiểu chỗ return sau show().
Mong mọi người giúp đỡ. Em cảm ơn.
Bài liên quan





return để thoát ra khỏi hàm , tức là thoát ra khỏi vòng đệ qui đó bạn
pos == n+1là trường hợp dừng (thực ra ghipos > nmới đầy đủ).