HDU 1003 maxsum

#include<iostream>
#include<vector>
using namespace std;

typedef struct {
    int maxsum;
    int first;
    int end;
}resultArryType;


void OutResult(vector<int> vec, int num)
{
    resultArryType resultArry;
    int max = 0;
    int numCount = 0;
    int maxsum = 0, sumtemp = 0;
    resultArry.maxsum = -1001;
    resultArry.end = 0;
    resultArry.first = 0;
    numCount = vec.size();
    for (int i = 0; i < numCount; i++){
        sumtemp = 0;
        for (int j = i; j < numCount; j++){
            sumtemp += vec[j];

            if (sumtemp > resultArry.maxsum){
                resultArry.maxsum = sumtemp;
                resultArry.first = i + 1;;
                resultArry.end = j + 1;
            }

            if (resultArry.maxsum >sumtemp && sumtemp < 0)
                break;
        }
    }
    cout << "Case " << num << ":" << endl;
    cout << resultArry.maxsum << " " << resultArry.first << " " << resultArry.end << endl;
}


int main()
{
    int num, temp;
    int first;
    vector<int> vec;

    cin >> num;
    for (int i = 0; i < num; i++){
        first = 0;
        cin >> first;
        vec.clear();
        for (int j = 0; j < first; j++){
            cin >> temp;
            vec.push_back(temp);
        }
        OutResult(vec, i+1);
        if (i < num - 1)
            cout << endl;
    }
}

  

posted @ 2015-06-27 21:44  Mr.Ethan  阅读(144)  评论(0编辑  收藏  举报