输入n为老鼠数量,g为每一组老鼠的最大值,之后从0到n-1个老鼠的体重,最后是老鼠体重的比较序列。
对于每一组老鼠,选出最重的那个,晋级下一轮,本轮的其他老鼠名次相同,直到选出第一名。
结构体node表示老鼠,里面包括weight重量,index是按照排名后的顺序的老鼠的下标,index0是排名前老鼠的下标。rank是最终要输出的老鼠的排名。
1 |
|
另一个参考:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using namespace std;
int main(){
int n, m, x;
cin >> n >> m;
vector<int> mice(n);
vector<int> order(n);
int rank[n];
fill(rank,rank+n,0);
for (int i = 0; i < n; ++i) {
cin>>mice[i];
}
for (int i = 0; i < n; ++i) {
cin>>order[i];
}
vector<int> res;
int Max, idex, group;
while (order.size()>1) {
group = order.size() / m + 1;
if ((order.size() % m != 0) ) ++group;
for (int i = 0; i < order.size(); ++i) {
if (i%m == 0) {
Max = -1;
if (i != 0) {
res.push_back(idex);
}
}
if (Max < mice[order[i]]) {
Max = mice[order[i]];
idex = order[i];
}
rank[order[i]] = group;
}
res.push_back(idex);
order = res;
res.clear();
}
rank[order[0]] = 1;
for (int i = 0; i < n; ++i) {
if (i != 0) cout << ' ';
cout << rank[i];
}
return 0;
}
原文链接:https://blog.csdn.net/CV_Jason/java/article/details/85238006