C++ 时间超限(最大连续子序列和问题)

题目如下

img

为什么这个程序在oj系统上会时间超限啊


#include
#include
#include
 
using namespace std;

int main(){
    int n;
    while(cin >> n){
        int digit[n+5];
        for(int i = 0; i < n ;i ++){
            scanf("%d",&digit[i]);
        }
        int start = -1, end = -1, max = 0;
        for(int i = 0; i < n ;i ++){
            int sum = 0;
            for(int j = i; j < n ;j ++){
                sum += digit[j];
                if(sum > max){
                    start = i;
                    end = j;
                    max = sum; 
                }
            }
        }
        printf("%d %d %d\n",max,start,end);
    }
}

你的代码效率太低, 用动态规划。

你没有判断cin的返回值是不是有值,那它无限阻塞,永不结束,可不超时吗