zoukankan      html  css  js  c++  java
  • hdu 1003(最大连续字串)

    题意:很容易理解不用过多的解释。。。

    分析:因为要求是连续的,所以只要它这左边的大于零就相加,然后以此类推,难点是记录序列的起点和终点,具体看我的代码吧!!

    代码实现:

    #include<stdio.h>
    #include<string.h>
    int a[100001];
    int main()
    {
       int T,n,i,j,sum,max,f,r,f1;
       scanf("%d",&T);
       for(j=1;j<=T;j++)
       {
           scanf("%d",&n);
           for(i=1;i<=n;i++)
               scanf("%d",&a[i]);
           f=f1=r=1;
           sum=a[1];max=a[1];
           for(i=2;i<=n;i++)
           {
              if(sum>=0)//a[i]左边的序列大于零就相加
              {
                  sum=sum+a[i];
                  if(sum>max)
                  {
                      f=f1;
                      r=i;
                      max=sum;
                  }
              }
              else//小于零就不相加
              {
                  sum=a[i];
                  if(a[i]>=0)
                      f1=i;
                  if(max<sum)
                  {
                      f=r=i;
                      f1=i;
                      max=sum;
                  }
              }
           }
           printf("Case %d:\n",j);
           printf("%d %d %d\n",max,f,r);
           if(j!=T)
               printf("\n");
       }
       return 0;
    }
  • 相关阅读:
    .Spring事务管理
    什么叫事务;什么叫业务逻辑;什么叫持久化
    Hibernate基本应用01
    Maven整理
    责任链模式和观察者模式
    SpringBoot基础入门
    反射总结
    多线程
    IO流
    File类总结
  • 原文地址:https://www.cnblogs.com/jiangjing/p/2986375.html
Copyright © 2011-2022 走看看