中级守护
1479 去重排序(Sort)
题目描述 Description
对于给定的n个随机排列的整数(可能会有重复),若其中含有重复相同的整数只保留一个,剩下的数中按从小到大排序输出。
#include<iostream>
#include<cstdio>
using namespace std;
long long int n,a[100000],s=0;
int main()
{
cin>>n;
for (int i=0;i<n;i++)
cin>>a[i];
s=n;
for (int i=0;i<n-1;i++)
for (int j=0;j<n-i-1;++j)
if (a[j]>a[j+1])
swap(a[j],a[j+1]);
for (int i=0;i<n-1;i++)
if (a[i]==a[i-1])
s--;
cout<<s-1<<endl;
for (int i=0;i<n;++i)
if (a[i]!=a[i-1]||i==0)
cout<<a[i]<<" ";
return 0;
}
为什么错了?求解。
资深守护
既然是c++党,你应该知道传说中的~~~
STL大法:
头文件:algorithm
写法:sort(a+1,a+n+1)
去重直接判断a[i]和a[i-1]是否相等 如果不相等输出
(注意,a[1]直接输出)
中级光能
swap(a[j],a[j+1])???what???
直接用:sort(a+1,a+n+1)
保证AC。
万能头文件:#include<bits/stdc++.h>