关于#c语言#的问题:我想请教深度搜索相关的问题代码实现的功能num是否可以由buf里面的数据构成,但是打印的结果却不是想要的输出,反复观察后还是没有发现问题的所在

大家好,我想请教深度搜索相关的问题
代码实现的功能num是否可以由buf里面的数据构成,使用深度搜索,但是打印的结果却不是想要的输出,反复观察后还是没有发现问题的所在

img

数组名称传递时会退化成指针,通过 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);
}

img