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++)
		