体会到pat对输出的要求了
用一个unordered_map实现快速找到当前中奖位置的人是否已经中过奖,如果中过则顺延。
#include <iostream>
#include <unordered_map>
using namespace std;
const int N = 1010;
string name[N];
unordered_map<string , int> h;
int main()
{
int m , n , s;
cin >> m >> n >> s;
for(int i = 1 ; i <= m ; i++) cin >> name[i];
if(m < s) puts("Keep going...");//如果转发总数小于起始点,说明没有人中奖
else
{
while(s <= m)//当枚举到的序号不大于总转发数时
{
while(h.count(name[s])) s++;//如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位
cout << name[s];
h[name[s]] = 1;
if((s += n) <= m) cout << endl;//如果不是最后一名中奖者,输出回车
}
}
return 0;
}
太感谢了
加油hh
我没报pat的课 为什么可以做?
就是这样啊,我也木有报
那题目在哪里找的?
搜索PAT
原来如此