312 Burst Balloons
Note:
(1) You may imagine nums[-1] = nums[n] = 1. They are not real therefore you can not burst them.
(2) 0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100
Example:
Given [3, 1, 5, 8]
Return 167
nums = [3,1,5,8] --> [3,5,8] --> [3,8] --> [8] --> []
coins = 3*1*5 + 3*5*8 + 1*3*8 + 1*8*1 = 167//algorithm is incorrect
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print1D(vector<int> &nums) {
for (auto i : nums) cout << i << ' ';
}
int maxCoins(vector<int>& nums) {
int maxCoinValue = 0;
int min_index;
int left, center, right;
while (!nums.empty()) {
min_index = min_element(nums.begin(), nums.end()) - nums.begin();
center = nums.at(min_index);
if (min_index - 1 < 0)
left = 1;
else
left = nums.at(min_index - 1);
if (min_index + 1 >= nums.size())
right = 1;
else
right = nums.at(min_index + 1);
maxCoinValue += left*right*center;
nums.erase(nums.begin() + min_index);
}
return maxCoinValue;
}
int main()
{
vector<int> balloons = { 2,3,4,5,6,7,8,9 };
vector<int> balloons2 = { 3,1,5,8 };
int result = maxCoins(balloons2);
cout << result;
}Last updated