0
已解决
邹昊轩
资深光能
资深光能
怎么回事啊?
int a[100001],b[100001]; int main() { int n,cnt=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; b[a[i]]++; } sort(a+1,a+1+n); for(int i=1;i<=n;i++){ if(b[a[i]]!=0){ cnt++; b[a[i]]=0; } } cout<<cnt<<endl; for(int i=1;i<=cnt;i++){ cout<<a[i]<<" "; } return 0; }
这是我的代码?为什么呢?
0
已采纳
张海棠
中级守护
中级守护
首先,定义n,i,t,maxx=0,cnt=0(除了cnt是int型,其他都是long long型)
然后输入n
你的这个
for(int i=1;i<=n;i++){
应该为
for(i=1;i<=n;i++){
这个 cin>>a[i]改为cin>>t
再加上两个if判断
第一个是:
如果(b[t]==1) cnt++;
第二个是:
if(maxx<t) maxx=t;
然后把第10、18、19和20行删掉
再把cnt挪到第10行
最后把for(int i=1;i<=n;i++){换成for(int i=1;i<=maxx;i++){
把b[a[i]]!=0换成b[i]>0
把b[a[i]]=0换成b[i]=0
这样就行啦!!
@邹昊轩 希望你AC 100分!!
望采纳!!!!
0
0
高子健
新手天翼
新手天翼
@邹昊轩 这道题邹昊轩 3802是一样的
你的思路是正确的
cin>>a[i]; b[a[i]]++;
这里改成
cin>>t;
a[t]++;
sort(a+1,a+1+n); for(int i=1;i<=n;i++){ if(b[a[i]]!=0){ cnt++; b[a[i]]=0; } }
这里的sort省去 循环从1~10000;
判断a[i];
b[a[i]]=0; 也不需要;
for(int i=1;i<=cnt;i++){ cout<<a[i]<<" "; }
循环从1~10000;
输出i;
AC;
望采纳,谢谢。
高子健在2020-03-17 14:26:04追加了内容
如果还是不对跟我说