2017-09-15 4 views
0

配列内の隣接していない要素の最大合計を求めるアルゴリズムを考え出しましたが、合計のために選んだ。ここでは(いくつかの初期化なし)最大合計のための私のアルゴリズムは次のとおりです。配列内の隣接していない数の最大和に対して選択された数のインデックスを見つける方法

int n; //number of cells. Cells are labeled from 1 to n 
int num[]; // all the numbers 
int findMax[]; // findMax[i] equals to the current maximum score 
for (int i = 0; i<n; i++){ 
    if (i == 0){ 
     findMax[0] = num[0]; 
    } 
    else if (i == 1){ 
     findMax[1]= Math.max(findMax[0],num[1]); 

    } 
    else{ 
     findMax[i]=Math.max(findMax[i-2]+num[i], findMax[i-1]); 

} 
return findMax[n]; 

私たちが選択した数字のindiceを取得することはそれほど明白ではありません。誰かが私にこの洞察を与えてくれますか?ありがとう!

+1

私はスタックオーバーフローコミュニティの新しいユーザーです。私の質問がはっきりしない場合は、ここでコメントしてください。ヒントや提案は大歓迎です。 – Andyzz

答えて

0

Math.maxの代わりに最高のバリアントを取得するには、独自の条件を使用してください。

2つのバリアントから最大値を選択する場合は、最適なバリアントインデックスを追加のストレージ(アレイ)に書き込みます。

最後に最適な組み合わせの巻き戻しトラック。

この手がかりが課題を解決するのに十分であることを願っています。

関連する問題