2016-06-15 20 views
1

私は、最大サブアレイ問題のためのKadane's Algorithmを行っています。私たちが持っているアルゴリズムから理解できるものは、サブアレイです。サブ配列には配列全体が含まれますか?Kadaneのアルゴリズムでのクエリ

実は私はここでは、配列のすべての要素の合計であり、最終的な答えとして13を与えている次のプログラムを

int main(void) 
    { 
    int arr[9]={5,6,-4,-1,-2,1,5,3}; 

    int i,n,max_last =0,max_mid =0; 

    for(i=0;i<8;i++) 
    { 
     max_mid = max_mid + arr[i]; 
     printf("max_mid =%d\n",max_mid); 

     if (max_mid < 0) 
       max_mid =0; 

     if(max_mid > max_last) 
       max_last = max_mid; 
    } 

     printf("val=%d",max_last); 
     return 0; 
    } 

をしようとしていました。

答えて

3

はい、連続したサブアレイは、アレイ全体を含む解決策になります。空のサブアレイがあまりにも有効な解決策になるかもしれません

+0

+1(すべての負の数値アルゴリズムのためには、最大加算結果0を与えます)。それは、数学者が全体の集合がそれ自身の部分集合であると言う方法とまったく同じです。厳密に小さいサブセットは*適切なサブセット*と呼ばれます。そのため、配列全体ではないサブ配列を参照するために "適切なサブ配列"を使用できると仮定します。 – AakashM

+0

アルゴリズムは一般的なケースを想定しており、誰もその要件を主張していないので、「適切なサブアレイ」の解を分離する必要はないと思います。 – MBo

関連する問題