社区讨论
关于语法
学术版参与者 5已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mi4csr03
- 此快照首次捕获于
- 2025/11/18 17:10 3 个月前
- 此快照最后确认于
- 2025/11/20 04:05 3 个月前
有如下代码:
CPP#include<bits/stdc++.h>
using namespace std;
deque<int> dq;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
bool f=true;
int q,opt,x;
cin>>q;
while(q--)
{
cin>>opt;
switch(opt)
{
case 1:cin>>x,f?dq.push_front(x):dq.push_back(x);break;
case 2:if(!dq.empty()) f?dq.pop_back():dq.pop_front();break;
case 3:f=!f;break;
}
printf("%d\n",dq.empty()?-1:dq.front()^dq.back());
}
return 0;
}
我认为在同一次循环中,
f 的值是不会变化的,且双端队列的 front 和 back 在代码的逻辑下可以对调(已经尝试将 f 初始化为 true 和 false 都能得到正确答案),因此不需要初始化 f,为什么在这段代码中,不对 f 初始化有概率不能得到正确答案。编译命令:
CPPg++ -O2 -std=gnu++20
回复
共 9 条回复,欢迎继续交流。
正在加载回复...