6.数组元素最大差(只能后面减前面)【dp】

来源:互联网 发布:华为交换机mac绑定 编辑:程序博客网 时间:2024/05/22 07:03

例如:求数组a[]={8,2,10,3,9}中,数组元素的最大差(只能下标大的元素减去下标小的元素,比如10-2,9-2,不能10-3);

#include <iostream>#include <string.h>using namespace std;/**关键在于dp函数的理解,这个程序中的dp是我归类为结果在n个结果中最优的那个*dp[i]表示以a[i]结束来作为减数的最大差,也就是用a[i]减去前面的最小值。*后面的就好理解了,*/int main(){const int len=5;int a[len]={8,2,10,3,9};int dp[100];memset(dp,0,sizeof(dp));//len>=2, so dp[1]=a[1]-a[0], dp[0] doesn't exist!dp[1]=a[1]-a[0];for(int i=2;i<len;i++){if(dp[i-1] <= 0)//a[i] is the mindp[i]=a[i]-a[i-1];elsedp[i]=dp[i-1]+a[i]-a[i-1];}int max=0x80000000;for(int i=1;i<len;i++)if(dp[i]>max)max=dp[i];cout<<max<<endl;return 0;}


原创粉丝点击