PAT-BASIC1064——朋友数
我的PAT-BASIC代码仓:https://github.com/617076674/PAT-BASIC
原题链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805267416334336
题目描述:
知识点:标记数组
思路:用一个大小为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++解题报告: