3
3个测试用例,每个测试用例包含两行,所以下面有6行,以最后一个用例为例解析
倒数第二行6 0
这是第3个用例的第一行
6
: 这个测试用例有6个打印任务,
0
: 你的任务在打印队列中的位置(0表示开头,就是排第一个)
倒数第一行的1 1 9 1 1 1
这是第3个用例的第二行,
表示打印队列中的6
个任务(因为上一行的6 0
中的6表明有6个任务)的优先级
你的任务根据上一行6 0
中的0
表明在0位置,优先级为1(1
1 9 1 1 1)
输出解析:
1 // 第1个测试用例,打印你的任务花了1分钟
2 // 第2个测试用例,打印你的任务花了2分钟
5 // 第3个测试用例,打印你的任务花了5分钟
注意
只有打印才计算时间.
比如:
上面的第3个测试用例.第一个被打印的是优先级为9的任务, 最开始他前面有2个优先级为1的任务,这2个任务会每次被移动到最后且不会打印
,移动9
前面的2个任务这个是不花时间的
Go代码实现打印时间
参考了Java实现
因为Go没有内置的queue,这里自己实现了一个Queue,实现的比较粗糙
package main
import (
"errors"
"fmt"
)
type Queue struct {
Element []int
}
func (q *Queue)Pop()(int,error){
if len(q.Element)>0{
result := q.Element[0]
q.Element = q.Element[1:]
return result,nil
}else{
return -1,errors.New("no element to pop")
}
}
func (q *Queue)Push(i int){
q.Element = append(q.Element,i)
}
func main(){
fmt.Println("程序开始了")
var testCaseCount int // 测试用例的个数
var jobCount int // 每个测试用例的打印任务数量
var youJobPosition int // 每个测试用例的你的打印任务的位置
fmt.Scanf("%d", &testCaseCount)
fmt.Println("用例个数: ", testCaseCount)
for i:=0;i<testCaseCount;i++{
fmt.Scanf("%d", &jobCount)
fmt.Scanf("%d", &youJobPosition)
fmt.Printf("任务数量:%d, 你的打印任务的位置:%d \n", jobCount, youJobPosition)
job :=Queue{}
jobIndex := Queue{}
for i:=0;ijob{
return false
}
}
return true
}
在Goland这个IDE上的效果
Go代码实现打印顺序
待完成
打印机顺序打印问题
作者:cumt_TTR