动态规划
最大子段和(循环实现)
//最大字段和
#include<iostream>
#define N 6
using namespace std;
int data[N]={2,11,-4,13,-5,-2};
int dp[N];
int sum;
int max(int a,int b){
return a>b?a:b;
}
//循环实现
int solvedp(){
for(int i=0;i<N;i++){
dp[i]=max(dp[i-1]+data[i],data[i]);
if(dp[i]>sum)
sum=dp[i];
}
return sum;
}
void print(int a[]){
for(int i=0;i<N;i++)
cout<<a[i]<<"\t";
cout<<endl;
}
int main(){
cout<<solvedp()<<endl;
print(dp);
}

该博客介绍了使用动态规划解决最大子段和问题的循环实现方法。代码中定义了一个数组data,并通过循环更新dp数组,以找到连续子数组的最大和。最后输出了最大和及dp数组的值。
4万+

被折叠的 条评论
为什么被折叠?



