事实上,完全可以先将输入进来带有重复的元素们保存进一个数组并对该数组进行排序,再将该数组的各个元素逐个判断是否与前一元素相同(重复与否的判断),将不重复的元素转移至另一个数组,与此同时进行对不重复元素的项数进行计数(懒得打计数器)。
代码如下
//Stand up for the faith! #include#define INF 0x3f3f3f3f #define LL long long #define FRO freopen #define FCO fclose #define US unsigned #define CN const #define MAXN 20001 using namespace std; inline LL read() { LL s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')w=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { s=s*10+ch-'0'; ch=getchar(); } return s*w; } int n,num=1,a[2000],final[2000]; //关于为什么num=1,后面会解释。 int main(void) { // FRO("****.in","r",stdin); // FRO("****.out","w",stdout); n=read(); for(int i=1;i<=n;i++) { a[i-1]=read(); } sort(a,a+n); //a数组排序。 final[0]=a[0]; //i=0时再-1数组会越界,故先处理掉a[0]。 for(int i=1;i