有一排香蕉,每个香蕉有不同的甜度值。小猴子想吃香蕉,但不能吃相邻的香蕉。以下代码能找到小猴子

吃到最甜的香蕉组合。

// bananas:香蕉的甜度void findSelectedBananas(vector<int>& bananas, vector<int>& dp) {   vector<int> selected;   int i = bananas.size() - 1;    while (i >= 0) {      if (i == 0) {        selected.push_back(0);        break;      }       if (dp[i] == dp[i-1]) {        i--;      } else {        selected.push_back(i);        i -= 2;      }   }    reverse(selected.begin(), selected.end());   cout << "小猴子吃了第: ";   for (int idx : selected)      cout << idx+1 << " ";   cout << "个香蕉" << endl;} int main() {   vector<int> bananas = {1, 2, 3, 1}; // 每个香蕉的甜    vector<int> dp(bananas.size());   dp[0] = bananas[0];   dp[1] = max(bananas[0], bananas[1]);   for (int i = 2; i < bananas.size(); i++) {      dp[i] = max(bananas[i] + dp[i-2], dp[i-1]);   }   findSelectedBananas(bananas, dp);    return 0;}
填写答案