C语言学习C语言

杭电oj-1003--Max sum

2019-10-12  本文已影响0人  小小Henry

一开始我是分开考虑开始的下标和结束的下标的。
直到看见某位大佬的代码
原谅我太菜!!!

#include <stdio.h>

int main(void)
{
    /*********膜拜大佬的代码******/
    int row, n, i, j, starti, maxi, tempi, max, temp;
    int a[100000];
    scanf("%d", &row);
    for (i = 0; i < row; i++)
    {
        //初始化
        int a[100000] = { 0 };
        max    = -1001;
        temp   = 0;
        tempi  = 1;
        scanf("%d", &n);
        for (j = 1; j <= n; j++)
        {
            //Input
            scanf("%d", &a[j]);

            temp += a[j];
            if (temp > max)
            {
                max    = temp;
                starti = tempi;
                maxi = j;
            }
            if (temp < 0)
            {
                temp  = 0;
                tempi = j + 1;
            }
        }    

        //Output
        printf("Case %d:\n", i+1);
        printf("%d %d %d\n", max, starti, maxi);
        if (i != row - 1)
            printf("\n");
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读