笔试题:C++打印队列
标签:数组 div 最大 tor == 介绍 return span 数据
题目:打印队列
题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始)。
例:
输入:9,3,5,4,7,1
输出:0,4,2,3,1,5
分析:第一点是不知道输入任务的个数,这个要用 reserve 指令来解决;第二点是不要忽略逗号,不要天真的忽略掉。要用到栈的相关知识,但又不能完全用栈来储存数据,因为要输出的是下标,这个一般要转换成数组来解决。
代码:
1 #include 2 #include string>
3 #include 4 #include 5 using namespace std;
6 int max(vector int> p, int n);
7 int main()
8 {
9 int n = 0;
10 int a;
11 char c;
12 vector int> p;
13 p.reserve(100);
14 p.push_back(0);
15 int i = 0;
16 while (cin >> a)
17 {
18 p[n++] = a;
19 p.push_back(n);
20 if ((c = getchar()) == ‘\n‘)
21 {
22 break;
23 }
24 }
25 for (i = 0; i 1; i++)
26 {
27 cout ",";//输出最大值的下标
28 p[max(p, n)] = 0;//输出一个值就初始化一个值
29 }
30 cout max(p, n);
31 }
32 int max(vector int> p, int n)
33 {
34 int a = 0, b = 0;
35 for (int i = 0; i )
36 {
37 if (p[i] > a)
38 {
39 a = p[i];
40 b = i;
41 }
42 }
43 return b;
44 }
结果:
笔试题:C++打印队列
标签:数组 div 最大 tor == 介绍 return span 数据
原文地址:https://www.cnblogs.com/ljy1227476113/p/9653002.html
评论