PAT-BASIC1064——朋友數
阿新 • • 發佈:2018-12-17
題目描述:
知識點:標記陣列
思路:用一個大小為40的陣列來標記該朋友證號是否出現過
時間複雜度是O(nlogn),其中n為朋友證號的個數,n最多等於36。空間複雜度是O(40)。
C++程式碼:
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int N; cin >> N; getchar(); int flags[40]; for(int i = 0; i < 40; i++) { flags[i] = 0; } char tempChar; int sum = 0; int count = 0; vector<int> friends; while((tempChar = getchar()) != '\n') { if(tempChar == ' ') { if(flags[sum] == 0) { flags[sum] = 1; count++; friends.push_back(sum); } sum = 0; } else { sum += (tempChar - '0'); } } if(flags[sum] == 0) { flags[sum] = 1; count++; friends.push_back(sum); } cout << count << endl; sort(friends.begin(), friends.end()); for(int i = 0; i < friends.size(); i++) { cout << friends[i]; if(i != friends.size() - 1) { cout << " "; } } }
C++解題報告: