【发布时间】:2017-07-12 16:16:10
【问题描述】:
一个班的 N 名学生互相对战,每个学生与班上的所有其他学生对战。
而且,班长还要把学生排成一排,每个学生都输掉了与他前面的学生的比赛。
例如:
假设有 4 个学生 A、B、C 和 D
匹配总数:6( (A,B), (A,C), (A,D), (B,C), (B,D), (C,D) )
匹配结果:
A 定义 B
C 定义 A
A 定义 D
C 定义 B
B 定义 D
C 定义 D
所以顺序是:C A B D
为了存储学生对象,我使用以下数据结构:
struct node {
int student_id;
int wins;
}
我正在使用优先级队列来安排学生,将更多优先级分配给获胜者。
如果两个或多个对象具有相同的优先级,那么我该如何排列它们?
我正在考虑根据谁赢谁来保留一个有向图,然后进行拓扑排序。它会起作用吗?
【问题讨论】:
-
第一句话和你的问题有关系吗?第二个似乎不相关且缺少信息。你有什么意见?
-
是的,这里的学生就是对象。现在清楚了吗?
-
不,不是。你有什么意见?
-
很抱歉呈现不佳,我会修改它以使其更清晰
-
我不确定当图形是循环时该怎么办,但如果它是非循环的,最好的办法是让优先级队列从高到低排列。制作相同优先级成员的有向图,对其进行拓扑排序以确定其顺序。这是作业吗?