2017-01-23 94 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錯誤。

相關問題