zoukankan      html  css  js  c++  java
  • 最大连续子序列和

    对于一个给定的长度为N的整数序列A,它的“子序列”的定义是:A中非空的一段连续的元素(整数)。你要完成的任务是,在所有可能的子序列中,找到一个子序列,该子序列中所有元素的和是最大的(跟其他所有子序列相比)。程序要求你输出这个最大值。
    输入
    输入文件的第一行包含一个整数N,第二行包含N个整数,表示A。 
    其中 
    1  < =  N  < =  100000 
    -10000  < =  A[i]  < =  10000 
    输出
    输出仅包含一个整数,表示你算出的答案。 
    样例输入
    5 
    3  -2  3  -5  4 
    样例输出
    4

    #include<stdio.h>
    #define N 100020
    int max(int a,int b)
    {
    	if(a>b)
    	return a;
    	else return b;
    }
    int main()
    {
    	int a[N],dp[N];
    	int k,i,ans;
    	   scanf("%d",&k);
    	for(i=0;i<k;i++)
    	    scanf("%d",&a[i]);
    	    
    	dp[0]=a[0];
    	for(i=1;i<k;i++)
    		dp[i]=max(dp[i-1]+a[i],a[i]);
    		
    	ans=0;
    	for(i=1;i<k;i++)
    	  if(dp[i]>dp[ans])
          	ans=i;
          	
    	printf("%d
    ",dp[ans]);
    	return 0;	
     } 


  • 相关阅读:
    五一训练礼包 — B
    五一训练礼包—坐标问题
    单链表
    顺序表
    链表
    基础DP(3)
    基础DP(2)
    基础DP(1)
    分治法
    最小表示法
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003033.html
Copyright © 2011-2022 走看看