hackerrank中的解决方案不匹配

时间:2017-01-23 08:32:23

标签: c++ arrays dynamic-programming

我已经解决了hackerrank(https://www.hackerrank.com/challenges/maxsubarray)中最大的子阵列问题。它在代码块上运行良好。但是当我提交我的解决方案时,它会在控制台中给出不同的答案。

#include<bits/stdc++.h>
using namespace std;


int main() {
int no,n,i;

cin>>no;
while(no--){

    int arr[100001]={0},arr1[100001]={0};
    cin>>n;
    for(i=0;i<n;i++)
        cin>>arr[i];

    arr1[0]=arr[0];
    int maxi=arr[0];

    for(i=1;i<n;i++){

        if(arr[i]+arr1[i-1]>arr[i]){
            arr1[i]=arr[i]+arr1[i-1];
        }
        else{
            arr1[i]=arr[i];
        }

        if(arr1[i]>maxi)
            maxi=arr1[i];
    }


    cout<<maxi<<" ";


    sort(arr,arr+n);
    int sum=0,i=n-1;
    while(arr[i]>0)
        sum+=arr[i--];

    if(sum==0)
    sum=arr[i];
    cout<<sum<<endl;

   }
   return 0;
}

任何人都可以对解决方案进行更正吗?

1 个答案:

答案 0 :(得分:2)

while(arr[i]>0)
    sum+=arr[i--];

这可能是垃圾,因为我可以低于0。

例如,输入

1
4
1 2 3 4

我发现您的代码错误地输出了10 14