博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归 理解
阅读量:4216 次
发布时间:2019-05-26

本文共 784 字,大约阅读时间需要 2 分钟。

给n个数 a1,a2,....ak  ,判断是否有其中的一些数的和 等于 k;

例如

n = 2

k = 3

集合{1,2}

DFS:

#include
using namespace std;#define MAX 1005int a[MAX];int n, k;int flag;int cnt;bool dfs(int cur, int s) { if(cur == n+1){ cout <<"cnt = " <
<<" "; if(s==k) cout <<"true"; else cout <<"false" ; return s == k; } if(dfs(cur+1,s)) return true;//false时候不做处理 true时候就返回 true if(dfs(cur+1,s+a[cur])) return true;//所以有一个符合条件就可以 return false; }int main() { int x; cin >> n >> k; for(int i = 1; i <= n; ++i){ scanf("%d",&x); a[i] = x; } flag = 0; if(dfs(1,0)){ cout <<"Yes\n"; } else{ cout << "No\n"; } return 0; }

图中 是 递归过程 最开始s = 0,  然后第一步时候由于需要判断第一个数是否要被加上产生的分叉, 左侧 加上第一个数 结果变为 1, 右侧没加1结果仍旧为0,

接着继续往下分叉 , 这里 每次每次分叉 只要结果为true就返回 true,除非所有分叉的结果 都是false才返回false

你可能感兴趣的文章
汽车智不智能?“智能座舱”有话说
查看>>
自动驾驶汽车CAN总线数字孪生建模(一)
查看>>
自动驾驶汽车CAN总线数字孪生建模(二)
查看>>
自动驾驶汽车GPS系统数字孪生建模(一)
查看>>
自动驾驶汽车GPS系统数字孪生建模(二)
查看>>
上海控安入选首批工控安全防护能力贯标咨询机构名单
查看>>
自动驾驶汽车传感器数字孪生建模(一)
查看>>
自动驾驶汽车传感器数字孪生建模(二)
查看>>
车载数字孪生预期功能安全未知危害分析技术
查看>>
自动驾驶汽车以太网数字孪生建模(一)
查看>>
自动驾驶汽车以太网数字孪生建模(二)
查看>>
初识软件定义汽车
查看>>
科普 | 自动驾驶预期功能安全(二)
查看>>
轩辕实验室丨SAE J3061汽车信息安全标准解读
查看>>
轩辕实验室丨欧盟EVITA项目预研 第一章(一)
查看>>
轩辕实验室丨欧盟EVITA项目预研 第一章(二)
查看>>
轩辕实验室丨欧盟EVITA项目预研 第一章(三)
查看>>
专利 | 一种基于深度学习的车载CAN总线入侵检测方法
查看>>
VCU解决方案及核心L9788复杂驱动功能安全审计启动
查看>>
助力“探月工程”的单元测试工具可10倍提升测试效率
查看>>