HDU2713

View Code
 1 /*

 2 DP

 3 n个数,奇数步相加,偶数步相减

 4 */

 5 #include<stdio.h>

 6 #include<stdlib.h>

 7 #include<string.h>

 8 #include<iostream>

 9 #include<algorithm>

10 #include<queue>

11 #include<map>

12 #include<math.h>

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 } 

 

你可能感兴趣的:(HDU)