注意:\color{red}注意:注意:
可以边输入边判断
要首先输出开始的字符串,再考虑间隔多少人输出。
输出过的人使用map标记一下。
如果没有中奖的人需要特殊处理
#include <string>
#include <cstdio>
#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
int main() {
int m, n, s;
cin >> m >> n>> s;
getchar();
string str;
int num = 0, t = 0;
unordered_map<string, bool> mp;
bool flag = false;
for(int i = 1; i <= m; i++){
getline(cin, str);
if(i == s){
cout<<str<<endl;
mp[str] = true;
flag = true;
num++;
continue;
}
if(flag){
if(!mp[str]) t++;
if(t == n){
num++;
cout<<str<<endl;
mp[str] = true;
t = 0;
}
}
}
if(num == 0) cout<<"Keep going..."<<endl;
return 0;
}

本文介绍了一种基于C++的抽奖算法实现,通过使用map标记已输出的获奖者,确保了每轮抽奖的公平性和效率。文章详细解释了如何边输入边判断,以及如何处理没有中奖的特殊情况。

499

被折叠的 条评论
为什么被折叠?



