本文主要是介绍hdu(2713)Jumping Cows,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
两种方法解决这个问题。。
背包方法;;
#include<stdio.h>
#include<string.h>
int a[166000];
int dp[166600][3];
int max(int a,int b)
{
a=a>b?a:b;
return a;
}
int main()
{
int m,n,i,k;
while(scanf("%d",&m)!=EOF)
{
for(i=0;i<m;i++)
scanf("%d",&a[i]);
memset(dp,0,sizeof(dp));
for(i=0;i<m;i++)
{
dp[i][0]=max(dp[i-1][1]-a[i],dp[i-1][0]);//第偶数步
dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]);//第奇数步
}
k=dp[m-1][1]>dp[m-1][0]?dp[m-1][1]:dp[m-1][0];
printf("%d\n",k);
}
return 0;
}
#include<stdio.h>
int main()
{
int max1,max2,i,n,d;
while(scanf("%d",&n)!=EOF)
{
scanf("%d",&d);
max1=d;
max2=0;
n--;
while(n--)
{
scanf("%d",&d);
if(max2+d>max1)
max1=max2+d;
if(max1-d>max2)
max2=max1-d;
}
if(max1>max2)
printf("%d\n",max1);
else
printf("%d\n",max2);
return 0;
}
//
//i 1 2 3 4 5 6 7 8
//偶 0 5 6 -1 10 11 8 10 假设第a[i]为选中的最后一个数且为选中的第n个数(n为偶数)则max[n]=max[n-1]-a[i] n-1为奇数
// (7-2) (7-1) (7-8)(14-4)(14-3)(13-5)(16-6)
//可以用max1 ,max2 分别记录每次加入当前a[i]时所有n为情况奇数的最大值和n为偶数的最大值(n为选中元素的总个数)
这篇关于hdu(2713)Jumping Cows的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!