70分#2,#3,#4没过,怎么改进?
查看原帖
70分#2,#3,#4没过,怎么改进?
825015
moon_set楼主2023/3/9 20:59
#include<iostream>
using namespace std;

int f,r,f1,r1;
int m,n;

int main()
{
	int const N=1000+100;
	int p[N];			//文章的存储
	int sum=0,t;
	bool flag=0;
	f=r=f1=r1=1;			//队列的初始化
	cin>>m>>n;
	int d[m+1]={}; 
	for(int i=1; i<=n; i++)
	{
		cin>>p[r];
		t=f1;  
		while(f1!=r1)
		{
			if(d[f1]==p[r])			//判断单词是否在内存中 
			{           
				flag=1;
				break;
			}
			f1=(f1+1)%m;			//遍历队列 
		}
		f1=t;
		if(!flag)			//判断内存里有没有文章里的元素
		{
			sum++;
			if((r1+1)%m==f1)			//如果队满,牺牲第一个元素
			{
				f1=(f1+1)%m;
				d[r1]=p[r++];
				r1=(r1+1)%m;			//循环队列的归零操作
			}
			else
			{
				d[r1]=p[r++];				//如果队不满,加入内存
				r1=(r1+1)%m;
			}
		}
		flag=0;
	}
	cout<<sum;
	return 0;
}
2023/3/9 20:59
加载中...