深搜之搜索树
来源:互联网 发布:网络咨询师工作流程 编辑:程序博客网 时间:2024/06/05 16:39
给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。
输入:
n=4
a={1,2,4,7}
k=13
输出:
Yes(13=2+4+7)
经典深搜问题:递归代码:
#include <cstdio>int a[30];int n,k;bool dfs(int i,int sum) //前i项之和sum{ if(i==n) return sum==k; if(dfs(i+1,sum)) //放入第i个 return true; if(dfs(i+1,sum+a[i])) //不放入第i个 return true;}int main(){ while(~scanf("%d%d",&n,&k)) { for(int i=0;i<n;i++) scanf("%d",&a[i]); if(dfs(0,0)) printf("YES\n"); else printf("NO\n"); } return 0;}
如果要求保存相加的每一个数,可以这样实现:
#include <iostream>#include <vector>using namespace std;int a[4]={1,2,4,7},k;vector<int> ans;void dfs(int i,int sum){if(i==4){if(sum==k) { for(int i=0;i!=ans.size();i++)cout<<ans[i]<<" ";cout<<endl;return ; } else return ;}dfs(i+1,sum);ans.push_back(a[i]);dfs(i+1,sum+a[i]);ans.pop_back();return ;}int main(){ k=7; dfs(0,0);}
0 0
- 深搜之搜索树
- 搜索。深搜学习。深度优先搜索之数字全排列。nyoj,组合数
- 二叉树之搜索树
- 找工作之“二叉搜索树”
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 平衡搜索树之AVLTree
- 二叉搜索树之二
- 二叉搜索树之红黑树
- 二叉搜索树之递归
- 数据结构之三分搜索树
- 数据结构之二叉搜索树
- 数据结构之二叉搜索树
- 二叉搜索树--进阶篇之平衡二叉搜索树
- 搜索之线性搜索和二分搜索
- synchronized 介绍
- LibUsbDotNet使用方法
- Eclipse Class Decompiler——Java反编译插件
- Linux 之 export 本质
- 用绘本回忆青春创业经历——leo鉴书46
- 深搜之搜索树
- 视频捕捉代码
- OCP-1Z0-053-V13.02-502题
- 武术菜鸟自己练武一学期的体会
- git的常用命令行及理解
- jdbc条件中的时间参数
- mysql 快速清除指定表中数据的sql语句
- 谈谈使用VFW在windows下编程控制摄像头(一)
- Android学习笔记<一>监听器的实现方式