首页 > 试题广场 >

任务调度

[编程题]任务调度
  • 热度指数:1375 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
读入任务调度序列,输出n个任务适合的一种调度方式。

输入描述:
输入包含多组测试数据。

每组第一行输入一个整数n(n<100000),表示有n个任务。

接下来n行,每行第一个表示前序任务,括号中的任务为若干个后序任务,表示只有在前序任务完成的情况下,后序任务才能开始。若后序为NULL则表示无后继任务。


输出描述:
输出调度方式,输出如果有多种适合的调度方式,请输出字典序最小的一种。
示例1

输入

4
Task0(Task1,Task2)
Task1(Task3)
Task2(NULL)
Task3(NULL)

输出

Task0 Task1 Task2 Task3
头像 Perceive109
发表于 2023-03-28 17:10:18
采用小根堆解题,代码可能有些冗余但思路很清晰:数据输入同时用数组保存每个点的入度(代码部分使用了vector解决);设计小根堆排序规则:如果入读一样按照字典大小排序,入度不同则按照入读大小排序;扫描入读数组,将所有点入队;依次输出队头元素;如有不足,请不吝赐教! #include <iostr 展开全文
头像 牛客129401600号
发表于 2023-10-26 14:50:56
#include <iostream> #include <cstring> #include <queue> const int N = 100010; using namespace std; int n; string str; vector<i 展开全文
头像 marlin818
发表于 2024-03-14 17:51:14
#include <iostream> #include <queue> #include <vector> #include <cstring> using namespace std; const int N = 1e5+10; vector< 展开全文
头像 SStarry
发表于 2023-09-04 16:52:46
#include <iostream> #include <vector> #include <queue> using namespace std; int n; struct Node{ int in; int point; }; boo 展开全文
头像 在找对象的杨桃很想被叫靓仔
发表于 2024-03-19 22:16:46
#include <algorithm> #include <iostream> #include <map> #include <queue> #include <set> #include <vector> using na 展开全文
头像 wbc990512
发表于 2021-01-24 20:25:30
拓扑排序手工来算太简单了,写的时候还真遇到了不少困难。基本思路就是不断遍历结点序列,输出入度为0的结点并将其后继的入度减1,直到所有结点输出完毕。如果有多个入度为0的结点,从小到大输出用队列可以实现。 #include<stdio.h> #include<string.h> 展开全文
头像 ponynice
发表于 2024-03-14 22:03:54
#include <iostream> #include <map> #include <string> #include <vector> using namespace std; int strnum(string s){ int i,nu 展开全文

问题信息

上传者:小小
难度:
31条回答 6635浏览

热门推荐

通过挑战的用户

查看代码
任务调度