其他分享
首页 > 其他分享> > 【数据结构PTA】关于测试数据要考虑很多边边角角的题

【数据结构PTA】关于测试数据要考虑很多边边角角的题

作者:互联网

01-复杂度2 Maximum Subsequence Sum

坑:

1. 题目:output数据!不是下标

2. 输入数据:要考虑这些变态情况

(1)全是负数的情况  -- 特判

(2)全是0的情况 --输出: 0 0 0

(3)全是0+负数 --输出: 0 0 0

(4)0 0 0 1 2 3 --算!

(5)1 2 3 0 0 0 --不算!不要后面的0

#include<iostream>
using namespace std;
const int N = 1e4 + 10;
int a[N];
int k;
int main()
{
    cin >> k;
    for(int i = 0; i < k; i++)scanf("%d",&a[i]);
    int thissum = 0,totalsum = 0;
    int l=0,r=0;
    int L=0,R=0;
    int flag = 0;
    int flag_1 = 0;
    for(int i = 0; i < k; i++)
    {
        thissum += a[i];
        r=i;
        if(thissum > totalsum)L=l,R=r,totalsum = thissum;
        else if(thissum < 0)
        {
            l=i+1;
            r=i+1;
            thissum = 0;
        }
        if(a[i] < 0)flag++;  //负数几个
        if(a[i] == 0)flag_1++;  //0几个
    }
    if(flag == k)cout << 0 << ' ' << a[0] << " " << a[k-1] << endl;  //全是负数特判
    else if(flag+flag_1 == k) cout << 0 << ' ' << 0 << ' ' << 0 << endl;  //全0+负数(坑要特判)
    else  cout << totalsum << ' ' <<a[L] << ' ' << a[R] << endl;

    return 0;
}

 

标签:int,++,测试数据,totalsum,--,flag,PTA,边边角角,thissum
来源: https://www.cnblogs.com/thehomeof99/p/16214814.html