zoukankan      html  css  js  c++  java
  • 杭电1003题

    #include<stdio.h>
    #include<iostream>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    int max_i=0,min_i=0,ma=0;
    void max_son(int a[],int len){
        int k,k1,sum=0,i1=0,i2=0,flag=0;
        max_i=0;
        min_i=0;
        ma=k=-10000;
        for(int i=0;i<len;i++){
            if(a[i]>k){
                k=a[i];
                k1=i;
            }
            sum+=a[i];
            if(sum<0){
                sum=0;
                i1=i+1;
                }
            if(sum>ma){
                min_i=i1;
                max_i=i;
                ma=sum;
            }
        }
        if(ma==0&&min_i==1&&max_i==0){
            ma=k;
            min_i=max_i=k1;
        }
    }
    int main(void)
    {
        int m,n,a[100000]={0};
        while(cin>>n){
            int x=1;
            while(x<=n){
                scanf("%d",&m);
                for(int i=0;i<m;i++)
                    scanf("%d",&a[i]);
                max_son(a,m);
                printf("Case %d:
    %d %d %d
    ",x,ma,++min_i,++max_i);
                if(x!=n) printf("
    ");
                x++;
        }
        }
        return 0;
        }

    首先遇到的一个问题是TLE 因为我用了c++的标准输入流,对于这个题目它给定的数组大小在0-100000  这意味着要输入很多数 在时间上用c的输入方法更为合适;

    还一个问题是没有考虑当全为负数的情况。

    还一点便是题目要求每组数据间隔一行,但要注意最后一行不要不能多隔一个

    整个算法的思路是:每个数相加直到和sum<0,重新更改虚最小下标为前一位,且sum=0;期间若sum>前一个和max则将最小下标设为虚下表,最大下表设置为当前下标;

  • 相关阅读:
    WeakReference体验
    扩展Jquery自定义的一个错误警告控件ErrorProvider
    提高WCF的吞吐效率
    (三)资源
    替换WCF默认序列化方式
    (二)画刷
    JS字符串函数扩展
    索引
    Jquery ajax传递复杂参数给WebService
    有意义的整数正则表达式
  • 原文地址:https://www.cnblogs.com/yzbpxx/p/10594105.html
Copyright © 2011-2022 走看看