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+1
là trường hợp dừng (thực ra ghipos > n
mới đầy đủ).