大家好,我想请教深度搜索相关的问题
代码实现的功能num是否可以由buf里面的数据构成,使用深度搜索,但是打印的结果却不是想要的输出,反复观察后还是没有发现问题的所在
数组名称传递时会退化成指针,通过 sizeof(arr)/sizeof(int) 并不能获取数组长度
建议修改如下:
#include<stdio.h>
int a[10];
bool flag[10];
void dfs(int arr[],int lenth, int k, int cur,int n) {
if (cur>=lenth) {
if (!k) {
for (int i = 0; i < n; ++i) {
printf("%d ", a[i]);
}
printf("yes\n");
}
else {
for (int i = 0; i < n; ++i) {
printf("%d ", a[i]);
}
printf("no\n");
}
return;
}
if (!flag[cur]) {
a[n] = cur;
flag[cur] = true;
}
dfs(arr, lenth, k-arr[cur], cur + 1, n + 1);
flag[cur] = false;
dfs(arr, lenth, k, cur + 1, n);
}
int main() {
int buf[4] = { 1,2,4,7 };
dfs(buf,4, 13, 0,0);
}