poj1163

动态规划的题目 说实话 动态规划还不是很理解 这道题 也是大脑模拟一遍 别人代码 后学会这个方法 从最后一层 递推 用数组保留结果 时间复杂度 比之前用 递归小得多 只有o(n^2)

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define M 101
int maxsum[M][M],D[M][M];
int n;
int Maxsum(int i,int j)
{
 if(maxsum[i][j]!=-1)
 return maxsum[i][j];
 if(i==n)
 maxsum[i][j]=D[i][j];
 else
 {
 int x=Maxsum(i+1,j);
 int y=Maxsum(i+1,j+1);
 maxsum[i][j]=max(x,y)+D[i][j];
 }
 return maxsum[i][j];
}

你可能感兴趣的:(动态)