PAT-BASIC1069——微博轉發抽獎
阿新 • • 發佈:2018-12-17
題目描述:
知識點:迴圈
思路:按題述程式設計即可
注意點:
題目裡說了——“可能有人轉發多次,但不能中獎多次,所以如果處於當前中獎位置的網友已經中過獎,則跳過他順次取下一位”。因此,中獎的索引不一定等於離第S位差N的整數倍。
時間複雜度是O((M - S) / N)。空間複雜度是O(1)。
C++程式碼:
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; int main() { int M, N, S; cin >> M >> N >> S; getchar(); vector<string> winners; string tempName; string totalNames[M]; for(int i = 0; i < M; i++) { getline(cin, tempName); totalNames[i] = tempName; } if(S - 1 >= M) { cout << "Keep going..." << endl; return 0; } int i = S - 1; while(i < M) { while(find(winners.begin(), winners.end(), totalNames[i]) != winners.end()) { i++; if(i >= M) { break; } } if(i < M) { winners.push_back(totalNames[i]); } i += N; } for(int i = 0; i < winners.size(); i++) { cout << winners[i] << endl; } return 0; }
C++解題報告: