zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    Android ClearEditText:输入用户名、密码错误时整体删除及输入为空时候晃动提示
    Activity界面切换动画特效。
    点击事件的确认取消对话框。
    安卓菜单的实现,各种添加菜单的方法。
    联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。
    获取手机屏幕密度。
    Android统计图表MPAndroidChart.
    性能测试
    自动化框架
    排序算法
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2519209.html
Copyright © 2011-2022 走看看