7 条题解
-
1
STL容器直接套模板
-
- #include<bits/stdc++.h>
-
using namespace std;
#define pb(s) push_back(s)
int main()
{
int n;
cin>>n;
vector<int>v;
while(n--)
{
int m;
cin>>m;
v.pb(m);
}
sort(v.begin(),v.end());
auto list=unique(v.begin(),v.end());
v.erase(list,v.end());//删除重复元素
set<int> s(v.begin(), v.end());
cout << s.size() << endl;
for(const auto &num:v)
cout<<num<<" ";
cout<<endl;
return 0;
}
-
-
0
//肝了一个小时写出来了 #include<stdio.h>
int main() { int a[888],n,temp,i,j,x; scanf("%d",&n);
scanf("%d",&a[0]);
for(i=1;i<n;i++) { scanf("%d",&a[i]);
} for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[i]==a[j])
{ for(x=j;x<n;x++) //借助变量x,删除下标为j的元素,并将j后面的元素全部向前一步。
{ a[x]=a[x+1]; } j--;//j后面的每个元素向前移动1,使后面的元素仍占j位置,j不变 n--; //数据元素总数减一
} } } printf("%d\n",n); for(i=1;i<n;i++) //冒泡必学的
{ for(j=0;j<n-i;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(i=0;i<n;i++) { printf("%d\n",a[i]);
} return 0; } //虽然超时了,但是不能丢分儿
-
0
#include<stdio.h> int a[1001]; int main() { int n; scanf("%d",&n); int tmp; for(int i=1;i<=n;i++) { scanf("%d",&tmp); a[tmp]++; } int sum=0; for(int i=1;i<=1000;i++) { if(a[i]) { sum++; } } printf("%d\n",sum); for(int i=1;i<=1000;i++) { if(a[i]) { printf("%d ",i); } } return 0; }
-
0
#include<stdio.h> int main() { int n; scanf("%d",&n); int a[1000+5],box[1000+5]={0}; int cnt=0; for(int i=0;i<n;i++){ scanf("%d",&a[i]); box[a[i]]++; } for(int i=0;i<=1005;i++){ if(box[i]>0){ cnt++; } } printf("%d\n",cnt-1); for(int i=0;i<=1000;i++){ if(box[i]>0){ printf("%d ",i); } } return 0; }
-
0
#include <stdio.h> #include <iostream> #include <set> int oi[1100]; using namespace std; int main() { int m; scanf("%d",&m); set<int> st; for (int i=0;i<m;i++) { int pick; scanf("%d",&pick); st.insert(pick); } cout << st.size() << endl; for(set<int>::iterator it = st.begin(); it != st.end(); it++) { cout << *it <<' '; } return 0; }
-
0
分享一位csdn大神的神级脑回路 我愿称之为最强 //这个程序做的事形象点就是:这里有一千个空位置(a[1001]={0}),这一千个位置标号就是从一到一千,然后来N个学生,第一个学生学号是t,t位置肯定是空的(a[t]==0),学生就站过去(这时候a[t]==0),学生t因为第一个来很开心;接下来学生学号b(b<t),就站到b位置,而且站在了学生t的前面,学生t就有些不爽,有一个学生学号c(c>t),就站到c位置,站在了学生t的后面,学生t露出了骄傲的微笑;如果这时候又有一个学号是t的,他位置有人了,就只能悄悄地离开,不留下一片云彩,第一个学生t没什么反应,…。最后看几个位置有人(a[t]! =0)(等于第一个学生t不爽和小骄傲的总次数),然后让他们从小到大报数(输出排序后的随机数)。
这思路顶礼膜拜!
#include<stdio.h> int main(){ int N,a[1001]={0},t,i; int count=0; scanf("%d",&N); for(i=0;i<N;i++){ scanf("%d",&t); if(a[t]==0){ a[t]=t; count++; } } printf("%d\n",count); for(i=0;i<1001;i++){ if(a[i]!=0) printf("%d ",a[i]); } return 0; }
- 1
信息
- ID
- 136
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 1055
- 已通过
- 300
- 上传者