社区讨论

好奇怪

灌水区参与者 5已保存回复 9

讨论操作

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

当前回复
9 条
当前快照
1 份
快照标识符
@lo91cehz
此快照首次捕获于
2023/10/28 03:57
2 年前
此快照最后确认于
2023/10/28 03:57
2 年前
查看原帖
请大家看一下这道题,我用如下代码不开O2得到50分,开O2,得到100分。
CPP
#include <bits/stdc++.h>
using namespace std;
template<class T>
class my_queue{
private:
	T ar[100];
	int _top;
	int _last;
public:
	my_queue():_top(0),_last(0){}
	void push(T data){ar[++_last]=data;}
	T front(){return ar[_top+1];}
	T back(){return ar[_last];}
	void pop(){_top++;}
	int size(){return _last-_top;}
	bool empty(){return _last-_top==0;}
	bool in(T data){
		for (int i=_top+1;i<_last+1;i++){
			if (ar[i] == data) return true;
		}
		return false;
	}
};
my_queue<int> a;
int n,m;
int arr[1000];
int main(){
    cin>>m>>n;
	for (int i=0;i<n;i++){
		cin>>arr[i];
	}
	int sum=0;
	for (int i=0;i<n;i++){
		if (!a.in(arr[i])) sum++;
		else continue;
		if(a.size()<m) a.push(arr[i]);
		else{
			a.pop();
			a.push(arr[i]);
		}
	}
	cout<<sum;
	return 0;
}

回复

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

正在加载回复...