不错的dp入门题 画出dp矩阵 每个dp【i】【j】是由“其上”的状态或是“其左上”的状态转化而来,那我们选对角线和上边进行三角dp推导
#include<stdio.h> #include <iostream> using namespace std; #define MAX 110 int value[MAX][MAX]; int f[MAX][MAX]; int F,V; int main() { // freopen("in.txt","r",stdin); int i,j; scanf("%d%d",&F,&V); ;i<F;i++){ ;j<V;j++){ scanf("%d",&value[i][j]); } } f[][]=value[][]; ;i<V;i++) f[][i]=max(f[][i-],value[][i]);//对第1束花的初始化 ;i<F;i++) f[i][i]=f[i-][i-]+value[i][i]; //第i束花插入i个瓶子初始化,因为i束花插i个瓶子,只能按编号一个一个的插 ;i<F;i++){ ;j<V;j++){ f[i][j]=max(f[i-][j-]+value[i][j],f[i][j-]); } } printf(][V-]); ; }