2017-01-23 129 views
-1

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

#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; 
} 

任何人都可以提供更正解决方案吗?

+0

分享你在本地机器和hackerrank上获得的输出 –

回答

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

这可能是垃圾,因为我可以去下面0

例如,对于输入

1 
4 
1 2 3 4 

我看你的代码输出10 14错误。

相关问题