10分鐘徹底搞懂“動態(tài)規(guī)劃”算法


我寫的:
- #include<iostream>
- using namespace std;
- const int N=101;
- int f[N],num[N],n;
- // 用于計算一個區(qū)間和的函數(shù)
- 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;
- }
- //主要的規(guī)劃函數(shù)
- 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;
- }?

答案大概就是這個罷(喜)
歡迎指正(大鞠躬)
標(biāo)簽: