本文共 848 字,大约阅读时间需要 2 分钟。
1 /* 2 DP 3 n个数,奇数步相加,偶数步相减 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 using namespace std;14 const int maxn = 150005;15 const int inf = 0x7fffffff;16 int dp[ maxn ][ 2 ];17 int a[ maxn ];18 int main(){19 int n;20 while( scanf("%d",&n)!=EOF ){21 for( int i=1;i<=n;i++ ) scanf("%d",&a[ i ]);22 memset( dp,0,sizeof(dp) );23 for( int i=1;i<=n;i++ ){24 dp[ i ][ 0 ]=max( dp[ i-1 ][ 0 ],dp[ i-1 ][ 1 ]-a[ i ] );//25 dp[ i ][ 1 ]=max( dp[ i-1 ][ 0 ]+a[ i ],dp[ i-1 ][ 1 ] );//奇数步 是 偶数步+a[i] 和 前i-1奇数步 中的最大值26 }27 printf("%d\n",max( dp[ n ][ 0 ],dp[ n ][ 1 ]));28 }29 return 0;30 }
转载于:https://www.cnblogs.com/xxx0624/archive/2012/12/07/2807942.html