Zeagle 2021-05-06 19:21:42
点我顶贴
收藏
删除
这道题一开始我用的是set自动排序去重,最后使用auto输出,但是这个平台的测评机运行不了auto这种方法,所以编译错误ce两发。
然后使用标记数组标记每个数,如果出现了两次及以上则不存入新数组中,最后使用一个sort排序即可。
#1 Zeagle@2021-05-06 19:23:38
34813
回复
删除
C++正解
int main() {
int n, x;
cin >> n;
int k = 0;
For(i, 1, n) {
cin >> x;
vis[x]++;//标记每个数出现的次数
if (vis[x] == 1) {//如果只出现了一次则存入新数组w中
w[k] = x;
k++;
}
}
cout << k << endl;
sort(w, w + k);//sort快排将数组从小到大排序
For(i, 0, k - 1) {
cout << w[i] << " ";
}
return 0;
}
#2 Zeagle@2021-05-06 19:25:03
34814
回复
删除
set数组错误做法(CE)
set<int >s;
int main() {
int n,x;
cin>>n;
For(i,1,n){
cin>>x;
s.insert(x);
}
cout<<s.size()<<endl;
for(auto i:s){
cout<<i<<" ";
}
return 0;
}
#3 Zeagle@2021-05-06 19:28:41
34815
回复
删除
有个东西没注意,代码中的For()其实是#define For(i, a, b) for(int i=a;i<=b;i++)