int array[] = {-1, 4, -2, 5, -5, 2, -20, 6};
私はその配列を持っていた場合、最大の部分配列を見つけるために私のKadaneアルゴリズムの実装が動作します。Kadaneアルゴリズム負の数値
int max_so_far = INT_MIN;
int max_ending_here = 0;
for (int i = 0; i < size; i++) {
max_ending_here = max(max_ending_here + array[i], 0);
max_so_far = max(max_ending_here, max_so_far);
}
printf("%d\n", max_so_far);
をしかし、私はすべてのネガの配列がある場合:
int array[]= {-10, -10, -10};
をそれは動作しません
、それは-10を返す必要がありますが、私はそれがあまりにも負の数のために働くことができますどのように0
を取得しますか?
ありがとうございました!
におそらく、あなたは/このソリューションが動作するか、なぜに展開して、あなたをコメントしてくださいすることができますコード。 –
とりわけ、配列が空かnullかをチェックする必要があります。max_ending_hereの値を配列の値の最初の数に設定してください。次に、配列の2番目の番号から配列の先頭をループします。(max_ending_here + array [i]、array [i])のmaxを選択します。配列がすべて負の数である場合、出力は最大の負の数になります。 – flmAtVancl