• NYOJ 44(最大连续子序列和)


     

    子串和

    时间限制:5000 ms | 内存限制:65535 KB
    难度:3
     
    描述
    给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。
     
    输入
    第一行是一个整数N(N<=10)表示测试数据的组数)
    每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)
    输出
    对于每组测试数据输出和最大的连续子串的和。
    样例输入
    1
    5
    1 2 -1 3 -2
    
    样例输出
    5
    提示
    输入数据很多,推荐使用scanf进行输入 
    /*肯定是连续子序列和,否则只需把整数相加即可*/
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int a[1000001];
    /*int cmp(const void *a,const void *b)
    {
    	return *(int *)a-*(int *)b;
    }*/
    int subsequencesum(int a[],int n)
    {
    	int sum=0,maxsum=0,i;
    	for(i=0;i<n;i++)
    	{
    		sum+=a[i];
    		if(sum>maxsum)
    			maxsum=sum;   
    		else
    			if(sum<0)
    				sum=0;
    	}
    	return maxsum;
    }
    int main()
    {
    	int i,T;int num,max=-101;
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d",&num);
    		//memset(a,0,sizeof(a));
    		for(i=0;i<num;i++)
    		{
    			scanf("%d",a+i);
    			if(a[i]>max)/*用qsort函数会浪费大量时间,而且wa啦*/
    				max=a[i];
    		}
    		//qsort(a,num,sizeof(int),cmp);/*全是负数的情况要特殊考虑*/
    		printf("%d\n",max<=0?max:subsequencesum(a,num));
    	}
    	return 0;
    }
    
    
    
    //TLE,十个数就40s
    #include<stdio.h>
    #include<string.h>
    //#include<time.h>
    int a[1000001];
    int subsequencesum(int a[],int n)
    {
    int sum,maxsum=0,i,j,k;
    for(i=0;i<n;i++)
    for(j=i;j<n;j++)
    {
    sum=0;
    for(k=i;k<=j;k++)
    sum+=a[k];
    if(sum>maxsum)
    maxsum=sum;
    }
    return maxsum;
    }
    int main()
    {
    	int i,j,T;int num;
    	//time_t start,end;
    //	start=time(NULL);
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d",&num);
    		memset(a,0,sizeof(a));
    		for(i=0;i<num;i++)
    			scanf("%d",a+i);
    		printf("%d\n",subsequencesum(a,num));
    	}
    //	end=time(NULL);
    //	printf("%d\n",end-start);
    	return 0;
    }
    

      

  • 相关阅读:
    获取一个日期月的所有日期
    elementUI 日期 周一、周二、周三、周四、周五、周六、周日快捷键
    两个日期之间的天数集合
    数组去重并排序
    日历封装
    <转载> VUE项目中CSS管理
    【转载】Vue项目自动转换 px 为 rem,高保真还原设计图
    HTML5新标签
    pChart图表插件使用
    JavaScript ajax请求
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2519209.html
Copyright © 2020-2023  润新知