酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

德州扑克比赛筹码分配难题:代码求解每位选手最终筹码量

```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; bool cmp(pair<int, int> a, pair<int, int> b) { if (a.second!= b.second) { return a.second > b.second; } return a.first < b.first; } int main() { int n; cin >> n; vector<int> a(n), b(n); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { cin >> b[i]; } vector<pair<int, int>> players; for (int i = 0; i < n; i++) { players.push_back({a[i], b[i]}); } while (true) { sort(players.begin(), players.end(), cmp); int minChip = players.back().first; vector<pair<int, int>> newPlayers; double sidePool = 0; for (int i = players.size() - 1; i >= 0 && players[i].first == minChip; i--) { sidePool += minChip; players[i].first -= minChip; } if (sidePool > 0) { vector<pair<int, int>> winners; for (int i = players.size() - 1; i >= 0 && players[i].first > 0; i--) { if (players[i].second == players.back().second) { winners.push_back(players[i]); } } double eachWin = sidePool / winners.size(); for (auto& winner : winners) { winner.first += eachWin; } } int countNonZero = 0; for (const auto& player : players) { if (player.first > 0) { newPlayers.push_back(player); countNonZero++; } } players = newPlayers; if (countNonZero <= 1) { break; } } for (const auto& player : players) { cout << player.first << endl; } return 0; } ``` ######[AI问答 | 537点数解答 | 2025-05-25 11:21:08]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]