题目描述
https://www.acwing.com/problem/content/1619/
如果不用set容器,也可以做
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
string s;
int n,m,start;
map<string,int>mp;
int main()
{
cin>>m>>n>>start;
int t=start;
int flag=0;
for(int i=1;i<=m;i++)
{
cin>>s;
if(i==start)
{
cout<<s<<endl;
mp[s]=1;
}
else if((i-t)==n)
{
if(!mp[s])
{
cout<<s<<endl;
mp[s]=1;
t=i;
}
else//这里如果满足但是重复就拿flag标记一下
{
flag=1;
}
}
if(flag)//显然要顺移的话要考虑接下来的字符串是否一直重复,如果不重复了标记flag=0回到正常
{
if(!mp[s])
{
cout<<s<<endl;
mp[s]=1;
t=i;
flag=0;
}
}
}
if(m<start)
{
cout<<"Keep going..."<<endl;
}
return 0;
}
%%%
。。。。。。。。