dfs的简单应用(部分和)

给定整数a1 a2.。。。。an判断是否可以选出若干数凑成sum
输入
n=4
a={1,2,4,7}
sum=13
输出
YES

非常经典和基础的一道dfs搜索,搜索逻辑非常简单,先决定第一个数要不要,遍历所有要第一个数的情况之后再遍历所有不要第一个数的情况,当遇到sum是直接退出,起到剪枝的功能


int dfs(int i,int n;int k;)
{
if(sum==k)return 1;
if(i==n)return 0;
if(dfs(i+1,n,k+a[i]);)
return 1;
if(dfs(i+1,n,k);)
return 1;
return 0;
}

事实上应该用bool性实现函数再次不多赘述,可自行选择

发布了20 篇原创文章 · 获赞 17 · 访问量 1001

猜你喜欢

转载自blog.csdn.net/weixin_45757507/article/details/104070791
今日推荐