洛谷 P2858 USACO06FEB 奶牛零食 Treats for the Cows
题目:奶牛零食 Treats for the Cows
思路:
f[i][j]表示从盒子顶端取到了i,还剩下j个零食可获得最多的钱。
f[i][j]=max(f[i+1][j-1]+a[i]*(n-j+1),f[i][j-1]+a[i+j-1]*(n-j+1))
边界条件 f[i][1]=a[i]*n
代码:
#include
using namespace std;#define maxn 2000int n;
int a[maxn+5];
int f[maxn+5][maxn+5]= {0};int main() {scanf("%d",&n);for(int i=1; i<=n; i++) {scanf("%d",&a[i]);f[i][1]=a[i]*n;}for(int j=2; j<=n; j++) {for(int i=n-j+1; i>=1; i--) {f[i][j]=max(f[i+1][j-1]+a[i]*(n-j+1),f[i][j-1]+a[i+j-1]*(n-j+1));}}printf("%d",f[1][n]);return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
