PAT测试题目关键活动

38次阅读

共计 845 个字符,预计需要花费 3 分钟才能阅读完成。

1 测试点:单起点和单终点,2 条关键路径

说明:我开始未通过的原因:输出顺序的问题。

题目原文:任务开始的交接点编号小者优先,起点编号相同时,与输入时任务的顺序相反。

对活动,起始交接点相同的情况下,在输入任务时,后输入的先输出。我的求解方法是整了个结构体封装起始交接点、终止交接点、输出次序编号,并对结构体数组排序。具体参考文献 2。

2 测试点:多起点和多终点

说明:
1 终点的确定,出度为 0 为终点为终点。
2 多终点,初始化时,每个终点的最晚完成时间,应当为项目最大完成时间。针对这一点,下面有一个对应的测试样例。本测试样例来自文献 3。

 输入样例
7 6
1 2 4
1 3 3
2 4 5
3 4 3
5 7 5
6 7 2

输出样例
9
1->2
2->4

3 一个顶点,可以入队,或者说可以被标记为已经访问的前提条件是:它的出度为 0。
具体来说,更新一个顶点的最晚完成时间时,出度减 1,并判断它是否可以入队。求解最晚完成时间部分伪代码如下。本部分参考文献 2。

Vertex v = 出队一个顶点;
for(v 的每个未访问的、且是 v 的前驱顶点的顶点) {
    
    更新最晚完成时间;
    
    当前顶点出度减 1;
    if(当前顶点出度 == 0) {入队当前顶点;}
}

一个比较好的测试样子如下。本测试样例来自文献 4。

 输入样例    
11 14
1 2 4
1 3 3
2 4 5
3 4 3
4 5 1
4 6 6
5 7 5
6 7 2
8 3 7
9 3 7
9 10 6
4 10 2
10 6 5
6 11 4

输出样例
21
3->4
4->10
6->11
8->3
9->3
10->6

3 参考文献

[1] https://pintia.cn/problem-set… (7-11 关键活动)
[2] https://blog.csdn.net/rxq2008… (7-11 关键活动(一)– A Little Programmer’s Base – CSDN 博客)
[3] https://blog.csdn.net/qq_2643… (08- 图 9 关键活动 (30 分) – master-dragon 的专栏 – CSDN 博客 )
[4] http://www.voidcn.com/article…

正文完
 0