程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [hdoj1003]maxsum

[hdoj1003]maxsum

編輯:C++入門知識

大致題意:

        輸入一個數列,找到從哪個數到哪個數的和最大,即最大子串(區分於子序列)

        輸出子串和的最大值已經最大子串開頭和結尾的下標,並輸出。

        !!!我一開始寫的時候定義max=-1,忽略了幾個數的和可能比-1還小的可能性。。。。。

[cpp] 
#include<iostream> 
using namespace std; 
int a[100000]={0}; 
 
void main() 

    int t,n; 
    int max=0; 
    cin>>t; 
    for(int j=1;j<=t;j++) 
    { 
         
        cin>>n;        
        int sum=0,temp=0,b=0,e=0; 
        for(int max=-10000,i=0;i<n;i++)//我當時寫成-1,調了好久,沒想到是這麼個錯誤 
        { 
            cin>>a[i]; 
            if(sum>=0) 
            { 
                sum+=a[i]; 
            } 
            else 
            { 
                sum=a[i]; 
                temp=i; 
            } 
            if(sum>max) 
            { 
                max=sum; 
                b=temp; 
                e=i; 
            } 
        } 
        printf("Case %d:\n",j); 
        printf("%d %d %d\n",max,b+1,e+1); 
        if(j<t) 
            cout<<endl;    
    } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved