动态规划求不相邻的最大子数组和
来源:互联网 发布:linux crontab 编辑:程序博客网 时间:2024/04/29 16:42
这个问题原题是这样描述的:
- 有N个节点,每两个节点相邻,每个节点只与2个节点相邻,因此,N个顶点有N-1条边。每一条边上都有权值wi,定义节点i到节点i+1的边为wi。
求:不相邻的权值和最大的边的集合。
因为不能选择两个相邻的元素,那么对于第i个元素的选择的可能性就包含选择i和不选择i个元素,至于选与不选其实是和第i-1个元素有直接关系的。
考虑两种情况:
1> 选择i,那么第i-1个元素一定不能选
2> 不选择i,那么第i-1个元素是可以选,也可以不选的,这决定于第i-2个元素对i-1的影响。
#include"iostream"#define max(a,b)a>b?a:busing namespace std;main(){int a[100];int i,j,n;int dp[100];cout<<"输入n"<<endl;cin>>n;cout<<"输入n个数"<<endl;for(i=0;i<n;i++){ cin>>a[i];} dp[1]=max(a[0],a[1]); for(j=1;j<n;j++) { for(i=2;i<=3;i++)//2个数之最多隔2个数,隔3个数是不可能的 { if(j>=i){ dp[j]=max(dp[j],dp[j-i]+a[j]);} } dp[j+1]=dp[j]; } cout<<dp[n-1]<<endl;}
- 动态规划求不相邻的最大子数组和
- 动态规划求不相邻的最大子数组和
- 动态规划求不相邻的最大子数组和
- 求不相邻的最大子数组和
- 不相邻的最大子数组和
- 【动态规划】求数组最大的子数组连续和
- 动态规划:求子数组的最大连续和
- 求最大子数组的和(动态规划法)
- 【动态规划】之求连续子数组的最大和
- 动态规划求最大子数组的和
- House Robber 非负数组,相邻不能相加,求最大的和是多少(动态规划)
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 动态规划算法 (微软笔试题,求连续子数组的最大和)
- 求数组的最大子段和,动态规划 时间复杂度O(n)
- java如何求最大子数组的和 蛮力算法 动态规划算法
- 【大白话版】求最大和子数组的动态规划算法
- 动态规划-循环数组的最大子数组和
- 动态规划求最大子段和
- Virtools平台开发人群仿真模型
- visual studio 2008中的路径宏
- 如何修改ASM的sys密码
- U-boot移植(一)--基本概念
- python检测变量是否有定义(即使用前检查是否定义好)
- 动态规划求不相邻的最大子数组和
- 对 iOS 多任务的误解 [多任务原理]
- 防御XSS的七条原则
- Flex 笔记
- 树结构
- Android环境篇
- Frontpage网页制作软件,你们还记得吗?
- Oracle数据库中快照的使用
- 实用的android颜色配置表