题目:1069 微博转发抽奖 (20 分)
来源:PAT (Basic Level) Practice
题面
题意:给定总转法次数,间隔次数和起始位置,从起始位置每间隔指定次数抽取一个人,如果该位置的人中过奖,就顺延找到没中奖的继续按以上流程操作。
思路:见代码
Code
点击查看代码
#include <bits/stdc++.h>
using namespace std;
map<string,bool>mp;
string s[2000];
int main(){
int m,n,d,num=0;
cin>>m>>n>>d;
for(int i=1;i<=m;i++)cin>>s[i];
for(int i=d;i<=m;i+=n){
if(mp[s[i]] == false){
num++;
mp[s[i]]=true;
cout<<s[i]<<"\n";
}
else {
for(int j = i+1;j<i+n;j++){
if(mp[s[j]]==false){
num++;
mp[s[j]]=true;
cout<<s[j]<<"\n";
i=j;
break;
}
}
}
}
if(num==0)cout<<"Keep going...";
return 0;
}