社区讨论

请问两串代码有何区别

题目总版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lztnmdq0
此快照首次捕获于
2024/08/14 17:33
2 年前
此快照最后确认于
2024/08/14 20:03
2 年前
查看原帖
如下所示,a.push(x)这一串代码必须放在最后,也就是说必须先清空队首才可以把新的数字放入队列,为什么?
如果先放入队列,再清空队首就只得90分

蒟蒻膜拜各位大佬orz

CPP
#include <bits/stdc++.h>
using namespace std;
bool m[1005]={};
queue <int> a;
int main (){
	int i, n,x,ans=1;
	cin >> i>> n>> x;
	m[x]=1; a.push(x); n--; x=0;
	while (n!=0){
		cin >> x;
		n--;
		
		if (m[x]==0) {
			m[x]=1;
			ans++;
			if (a.size()>=i) {m[a.front()]=0;a.pop();}//检测队列是否还有空位
			a.push(x);//位置不可调换
		}
	}
	cout << ans;
	return 0;
}

回复

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

正在加载回复...