c_cpp RodCutting - 基本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp RodCutting - 基本相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
// #DynamicProgramming #StandardProblem
// Memoization
int maxProfit(int l, vector<int> val){
if(l<=0){
return 0;
}
if(val[l]==0){
return 0;
}
int maxP=INT_MIN;
for(int j=1;j<=l;j++){
int with=val[j] + maxProfit(l-j, val);
int without= maxP;
maxP=max(with,without);
}
return maxP;
}
int maxProfitBU(int l, vector<int> val){
vector<int> dp(l+1);
dp[0]=0;
for(int i=1;i<=l;i++){
if(val[i]==0){
dp[i]=0;
}
dp[i]=INT_MIN;
for(int j=1;j<=i;j++){
int with= val[j]+dp[i-j];
int without = dp[i];
dp[i]=max( with, without );
}
}
return dp[l];
}
int main(){
freopen("ip.txt","r",stdin);
int t;
cin>>t;
while(t--){
int l;
cin>>l;
vector<int> val(l+1);
//prices of cuts 1 to l
for(int i=1;i<=l;i++){
cin>>val[i];
}
cout<<"Memoization: "<<maxProfit(l,val)<<endl;
cout<<"BottomUp: "<<maxProfitBU(l,val)<<endl;
}
}
以上是关于c_cpp RodCutting - 基本的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 基本设定
c_cpp 【18】基本鼠标操作
c_cpp 基本C ++模板
c_cpp 基本C ++模板
c_cpp c ++基本模板
c_cpp FMDB基本使用