10分钟彻底搞懂“动态规划”算法


我写的:
- #include<iostream>
- using namespace std;
- const int N=101;
- int f[N],num[N],n;
- // 用于计算一个区间和的函数
- int getSum(int s,int e){
- int res=0;
- // cout<<endl;
- for(int i=s;i<=e;i++){
- // cout<<num[i]<<' ';
- res+=num[i];
- }
- // cout<<res;
- // cout<<endl;
- return res;
- }
- //主要的规划函数
- int dp(){
- int res=-0x3f3f3f3f;
- for(int i=n-1;i>=0;i--){
- f[i]=getSum(i,n-1);
- for(int j=i+1;j<n;j++){
- if(getSum(i,j)>f[i]) f[i]=max(f[i],getSum(i,j));
- }
- if(f[i]>res) res=f[i];
- }
- return res;
- }
- int main(){
- cin>>n;
- for(int i=0;i<n;i++){
- cin>>num[i];
- }
- cout<<dp();
- return 0;
- }

答案大概就是这个罢(喜)
欢迎指正(大鞠躬)