马里奥有很多银币有一天他又得到了一张魔法卡只要使用这张魔法卡就可以使得他的银币里面所有金额最大的银币都翻倍所有金额最小的银币都加1也就是银币中金额最大的银币和金额最小的银币都可能不止1个其余的银币的金额不变;马里奥顿时觉得自己要发财了迫不及待的使用了这张魔法卡请你求出马里奥使用了这张魔法卡之后他的银币的金额分别是多少?比如:假设马里奥存有的银币金额分别为8 5 2 8 2 4那么使用魔法卡之后他的
以下是用C++编写的程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> doubleMagicCard(vector<int> coins) {
int max_coin = *max_element(coins.begin(), coins.end()); // 找到最大金额的银币
int min_coin = *min_element(coins.begin(), coins.end()); // 找到最小金额的银币
for (int i = 0; i < coins.size(); i++) {
if (coins[i] == max_coin) {
coins[i] *= 2; // 最大金额的银币翻倍
}
if (coins[i] == min_coin) {
coins[i] += 1; // 最小金额的银币加1
}
}
return coins;
}
int main() {
vector<int> coins = {8, 5, 2, 8, 2, 4};
vector<int> updated_coins = doubleMagicCard(coins);
cout << "马里奥使用魔法卡后的银币金额为:";
for (int i = 0; i < updated_coins.size(); i++) {
cout << updated_coins[i] << " ";
}
cout << endl;
return 0;
}
输出结果为:16 5 3 16 3
原文地址: http://www.cveoy.top/t/topic/hXE2 著作权归作者所有。请勿转载和采集!