问题标题: 酷町堂:1479 怎么做呢???十分!

0
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
周明轩
周明轩
资深光能
资深光能
应该是
if(b[i])
            g++;
……………………………………

if(b[i])
        {
            cout<<i<<' ';
            b[i]=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追加了内容

如果还是不对跟我说

我要回答