打印日程表
算法描述
- 多线程系统非常混乱,因为各种交错的执行时常出现
- 针对这个问题,我们会模拟这样一个场景
- 每个线程的输出会被描述成一个字符串
- 例如,字符串“AB”表示:1个单位时间跑完后,线程会打印出“A”,另一个单位时间跑完后,线程打印出“B”,第三个单位时间跑完后,打印出“A”(返回到开始)
- 你会接收到threads执行的描述、每个线程所分配的时间片(slices)
- 每个slice将以这样的形式给出:“Thread# Time”,Thread# 是从0开始编号的,放在threads数组中,Time 是指每个线程执行所需的单位时间
- slices的每个元素按照他们执行的顺序呈现
- 每个线程被执行到特定位置后,下次再执行时,从该位置继续往下执行
参数定义
- 类名
PrintScheduler
- 方法
getOutput
- 输入参数
vector <string>, vector <string>
- 输出
string
- 方法声明
string getOutput(vector <string> threads, vector <string> slices)
限制条件
- threads包含[1,50]个元素
- threads中的每个元素包含[1,50]个字符,每个字符都是大写字母
- slices包含[1,50]个元素,都是以下格式:”Thread# Time”,其中Thread是整数,在[0,k-1]之间,其中k是threads元素的个数
- Time是整数,在[1,50]之间
例子
- 输入
- threads: {“AB”,”CD”}
- slices: {“0 1”,”1 1”,”0 1”,”1 2”}
- 输出
- ”ACBDC”
测试实例
测试实例
实例一
- 输入
- threads = {“ABCDE”}
- slices: {“0 20”,”0 21”}
- 输出
- ”ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEA”
- 输入
实例二
- 输入
- {“A”,”B”}
- {“1 10”,”0 1”,”1 10”,”0 2”}
- 输出
- ”BBBBBBBBBBABBBBBBBBBBAA”
- 输入
实例二
- 输入
- {“A”}
- {“0 1”}
- 输出
- ”A”
- 输入