学习讨论,求助
原题链接:108.移球游戏2024-06-27 10:33:56
发布于:北京
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> balls(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> balls[i][j];
}
}
vector<pair<int, int>> moves; // 存储操作步骤
// 遍历每种颜色的球
for (int color = 0; color < m; color++) {
vector<pair<int, int>> count; // 存储每个柱子上该颜色球的数量以及柱子编号
for (int i = 0; i <= n; i++) {
int cnt = 0;
for (int j = 0; j < m; j++) {
if (balls[i][j] == color) {
cnt++;
}
}
count.push_back({cnt, i});
}
sort(count.begin(), count.end()); // 按照球的数量从小到大排序
// 移动球
for (int i = 0; i < n; i++) {
if (count[i].first == 0) break;
int from = count[i].second;
int to = count[n].second;
moves.push_back({from + 1, to + 1}); // 将x号柱子最上方的球移动到y号柱子最上方
balls[to][count[n].first - 1] = balls[from][count[i].first - 1]; // 移动球
balls[from][count[i].first - 1] = 0; // 清空原位置的球
}
}
// 输出结果
cout << moves.size() << endl;
for (auto move : moves) {
cout << move.first << " " << move.second << endl;
}
return 0;
}
不是AC,但也没问题啊
哪位大神帮我解答一下,在线等,急急急!!!!
全部评论 1
第8行错了
2024-10-05 来自 广东
0
有帮助,赞一个