笔试题:C++打印队列

题目:打印队列

题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始)。

例:

输入:9,3,5,4,7,1

输出:0,4,2,3,1,5

分析:第一点是不知道输入任务的个数,这个要用 reserve 指令来解决;第二点是不要忽略逗号,不要天真的忽略掉。要用到栈的相关知识,但又不能完全用栈来储存数据,因为要输出的是下标,这个一般要转换成数组来解决。

代码:

 #include <iostream>
#include <string>
#include <conio.h>
#include <vector>
using namespace std;
int max(vector <int> p, int n);
int main()
{
int n = ;
int a;
char c;
vector <int> p;
p.reserve();
p.push_back();
int i = ;
while (cin >> a)
{
p[n++] = a;
p.push_back(n);
if ((c = getchar()) == '\n')
{
break;
}
}
for (i = ; i < n - ; i++)
{
cout << max(p,n) << ",";//输出最大值的下标
p[max(p, n)] = ;//输出一个值就初始化一个值
}
cout << max(p, n);
}
int max(vector <int> p, int n)
{
int a = , b = ;
for (int i = ; i < n; i++)
{
if (p[i] > a)
{
a = p[i];
b = i;
}
}
return b;
}

结果:

笔试题:C++打印队列

上一篇:[Java 教程 00] 计算机基础


下一篇:gulp与webpack的区别