2017-01-23 7 views
-1

ハッカークランク(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; 
} 

誰でも解決策を提供できますか?

+0

ローカルマシンとハッカーで取得している出力を共有する –

答えて

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

私は私はあなたのコードの出力を誤って10 14ていることがわかり入力

1 
4 
1 2 3 4 

のために、例えば0

の下に行くことができるので、これはゴミすることができます。

関連する問題