社区讨论

关于语法

学术版参与者 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 的值是不会变化的,且双端队列的 frontback 在代码的逻辑下可以对调(已经尝试将 f 初始化为 truefalse 都能得到正确答案),因此不需要初始化 f,为什么在这段代码中,不对 f 初始化有概率不能得到正确答案。
编译命令:
CPP
g++ -O2 -std=gnu++20

回复

9 条回复,欢迎继续交流。

正在加载回复...