题意:
给你n个花插到m个花瓶中保证n个花的顺序的情况下如何最大
分析:
dp【i】【j】表示前i种花插入前j种花瓶的最大
dp【i】【j】=max(dp【i-1】【j-1】+cost【i】【j】,dp【i】【j-1】)
ACcode:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define maxn 105
#include <cstring>
using namespace std;
int n,m;
int a[maxn][maxn];
int dp[maxn][maxn];
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
scanf("%d",&a[i][j]);
dp[1][1]=a[1][1];
for(int i=2;i<=n;++i)dp[1][i]=max(dp[1][i-1],a[1][i]);
for(int i=2;i<=n;++i){
for(int j=i+1;j<=m;++j)
dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1]);
}
printf("%d\n",dp[n][m]);
}
return 0;
}