A670-题解(详细解析)
2025-05-10 15:02:47
发布于:四川
8阅读
0回复
0点赞
这道题非常简单但是费手。
所有需要的操作如下:
代表数字 | 操作 |
---|---|
1 | 将某数入队 |
2 | 让队首出队 |
3 | 获取队首元素 |
首先,我们需要导入头文件。
queue头文件包含在万能头内,可以直接使用。
但最好不要像我这样写,而是使用#include<queue>
。因为看起来更直观,还能避免报错。
#include<bits/stdc++.h>
using namespace std;
然后,我们需要创建一个int
队列 q,用来存储队列里的数据。
queue<int> q;
我们需要创建3个int
变量:n变量用来存储操作次数,x来存储操作内容,使用z来存储操作参数。
int n,x,z;
随后,在main
函数里,我们需要输入n(操作次数)
int main(){
cin >> n;
随后使用for
循环n次,用来操作n次
for(int i=1;i<=n;i++){
随后,输入x,用来判断操作
cin >> x;
如果数字为1,那么直接输入z并使用q.push(z)
函数使他入队即可
if(x == 1){
//输入操作参数z
cin >> z;
//将z入栈
q.push(z);
}
如果数字为2,我们需要先使用q.empty()
函数判断队列是否为空
如果为空还强行出队,会引发运行错误“RE”,因为队内没有元素可供出队。
如果为空(empty函数的返回值为1),直接输出“impossible!”(注意此处的感叹号是英文感叹号,而且不要忘记换行!!!)
如果不为空,再使用q.pop()
函数出队。
if(x == 2){
//判断队列是否为空(如果为空强行删会导致运行错误)
//如果判空,那么输出impossible!(无法出队,因为队内没有元素)
if(q.empty()==1){
//输出
cout << "impossible!" << endl;
}
//否则,正常进行出队
else{
//将队首出队
q.pop();
}
}
如果数字为3,我们同样需要先使用q.empty()
函数判断队列是否为空
如果为空(empty函数的返回值为1),输出“impossible!”。
如果不为空,使用q.front()
获取队首元素,输出即可(不要忘记换行!!!)。
//如果为3,查询队首元素
if(x == 3){
//判断队列是否为空(如果为空访问队首会导致运行错误)
//如果判空,那么输出impossible!(无法访问,因为队内没有元素)
if(q.empty()==1){
//输出
cout << "impossible!" << endl;
}
//否则,正常输出队首元素
else{
//使用q.front()获取队首元素
cout << q.front() << endl;
}
}
最后,结束程序,完成!
}
//结束程序
return 0;
}
以下是完整程序
//导入头文件(queue头文件包含在万能头内,可以直接使用,最好不要这么写)
#include<bits/stdc++.h>
#include<queue>
using namespace std;
//创建一个int队列 q。
queue<int> q;
//创建n变量用来存储操作次数,使用x来代表操作内容,使用z来代表操作参数。
int n,x,z;
//main函数
int main(){
//输入操作次数
cin >> n;
//使用for循环循环n次
for(int i=1;i<=n;i++){
//输入操作数字x
cin >> x;
//判断操作数字
//如果为1,入队
if(x == 1){
//输入操作参数z
cin >> z;
//将z入栈
q.push(z);
}
//如果为2,出队
if(x == 2){
//判断队列是否为空(如果为空强行删会导致运行错误)
//如果判空,那么输出impossible!(无法出队,因为队内没有元素)
if(q.empty()==1){
//输出
cout << "impossible!" << endl;
}
//否则,正常进行出队
else{
//将队首出队
q.pop();
}
}
//如果为3,查询队首元素
if(x == 3){
//判断队列是否为空(如果为空访问队首会导致运行错误)
//如果判空,那么输出impossible!(无法访问,因为队内没有元素)
if(q.empty()==1){
//输出
cout << "impossible!" << endl;
}
//否则,正常输出队首元素
else{
//使用q.front()获取队首元素
cout << q.front() << endl;
}
}
}
//结束程序
return 0;
}
顺便附上队列的基础操作
请保证你已经导入相应头文件(万能头或者queue)
queue<int> q;
创建一个int类型,名为q的队列。
q.push(x)
将x放入q队列中。
q.empty()
判断q队列是否为空(有返回结果,返回结果为bool)
q.pop()
删除q队列队首元素。
祝题题AC!
全部评论 1
这是我的第一篇题解qwq,希望喜欢
2025-05-10 来自 四川
1
有帮助,赞一个