PKU POJ 2181 Jumping Cows DP
题目意思是从数列中选出一个子序列,然后堆该数列依次加一个减一个,最后得到的和最大。
dp[0]记录之前处理过的数中,加一个数后得到的最大值;
dp[1]则是记录减一个数后的最大值。
#include<iostream> #include <string.h> #include <string> using namespace std; inline int mmax(int a,int b) { return a>b?a:b; } int main() { int p,i,s,dp[2]; while (scanf("%d",&p)!=EOF) { scanf("%d",&dp[0]); dp[1]=0; while (--p) { scanf("%d",&s); dp[0]=mmax(dp[0],dp[1]+s); dp[1]=mmax(dp[1],dp[0]-s); } printf("%d\n",mmax(dp[0],dp[1])); } return 0; }
浙公网安备 33010602011771号