德州扑克最终阶段:荷官求助,代码求解选手筹码分配问题
```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; // 比较函数,用于按照筹码量从小到大排序 bool compare(const pair<int, int>& a, const pair<int, int>& b) { return a.first < b.first; } // 计算每位选手最终筹码量的函数 vector<double> calculateChips(vector<int>& chips, vector<int>& powers) { vector<pair<int, int>> players; for (int i = 0; i < chips.size(); ++i) { players.push_back({chips[i], powers[i]}); } sort(players.begin(), players.end(), compare); vector<double> result(chips.size(), 0); while (players.size() > 1) { int minChip = players[0].first; vector<pair<int, int>> sidePoolPlayers; // 将筹码最小值的玩家的筹码扣除,建立边池 for (int i = 0; i < players.size(); ++i) { if (players[i].first!= 0) { players[i].first -= minChip; if (players[i].first!= 0) { sidePoolPlayers.push_back(players[i]); } } } // 找出边池中的最大牌力 int maxPower = 0; for (const auto& player : sidePoolPlayers) { maxPower = max(maxPower, player.second); } // 牌力最大的玩家平分边池筹码 double sidePoolChips = minChip * sidePoolPlayers.size(); double eachShare = sidePoolChips / count_if(sidePoolPlayers.begin(), sidePoolPlayers.end(), [maxPower](const pair<int, int>& p) { return p.second == maxPower; }); for (auto& player : sidePoolPlayers) { if (player.second == maxPower) { result[player.second - 1] += eachShare; } } // 移除筹码为 0 的玩家 players.erase(remove_if(players.begin(), players.end(), [](const pair<int, int>& p) { return p.first == 0; }), players.end()); } // 最后剩下的玩家拥有全部剩余筹码 if (!players.empty()) { result[players[0].second - 1] += players[0].first; } return result; } int main() { int n; cin >> n; vector<int> chips(n); vector<int> powers(n); for (int i = 0; i < n; ++i) { cin >> chips[i]; } for (int i = 0; i < n; ++i) { cin >> powers[i]; } vector<double> finalChips = calculateChips(chips, powers); for (const auto& chip : finalChips) { cout << chip << endl; } return 0; } ``` ######[AI问答 | 702点数解答 | 2025-05-25 10:06:07]
- 英语短文填空:揭秘睡眠阶段与闹钟设置的学问(字节豆包 | 508点数解答 | 2026-04-04 08:21:35)28
- C++编程揭秘:三位数变换几次能得到495?(字节豆包 | 365点数解答 | 2025-09-26 22:55:13)99
- C++ 实现:小 Q 送礼物之数字取余,开发中这 3 点要小心! (字节豆包 | 321点数解答 | 2025-11-05 18:39:56)125
- C++ 助力禾木:解决两套种树方案合并种树数量难题!(DeepSeek | 315点数解答 | 2025-11-08 15:40:30)55
- C++ 解决禾木种树问题:输入边界、数据结构特性及重复处理要点 (字节豆包 | 419点数解答 | 2025-12-28 15:13:56)99
- C++ 助力禾木解决院子种树数量难题!附代码详解(字节豆包 | 507点数解答 | 2026-01-24 20:11:19)34
- Java顺序表高效删除算法实现与实验验证报告(阿里通义 | 1347点数解答 | 2026-03-26 21:08:33)24
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)646
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)542
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)391
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)359
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)203