pta乙级1005 部分错误,帮帮忙

img


#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int n,m,i,j,p;
    cin >> n;
    int a[n][50],b[n],c[n];
    for(i=0;i<n;i++)
    {
     cin >> a[i][0];
    }
        for(i=0;i<n;i++)
       for(p=1;p>=0;p++){
            if(a[i][p-1]==1){
                c[i]=p;
                break;
            }
            else if(a[i][p-1]%2==0){
                a[i][p]=a[i][p-1]/2;
                } 
            else if(a[i][p-1]%2!=0){
                a[i][p]=a[i][p-1]*3+1;
                }
        }
 for(j=0;j<n;j++){
     b[j]=a[j][0];
     for(i=0;i<n;i++){
         for(m=0;m<c[i];m++){
             if(a[j][0]==a[i][0])
             break;
             else if(a[j][0]==a[i][m]){
             b[j]=0;}
         }
     }
 }
    sort(b,b+(n-1),cmp);
        for(i=0;i<n;i++)
    {
        if(b[i]!=0){
            cout << b[i];
            if(b[i+1]!=0)
                cout <<" ";
            else cout <<endl;
        }
    }
    return 0;
}

我自己又改了一下

img

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,m,i,j,p;
    cin >> n;
    int a[n][10000],b[n],c[n];
    for(i=0;i<n;i++)
    {
        cin >> a[i][0];
    }
        for(i=0;i<n;i++)
       for(p=1;p>=0;p++){
            if(a[i][p-1]==1){
                c[i]=p;
                break;
            }
            else if(a[i][p-1]%2==0){
                a[i][p]=a[i][p-1]/2;
                } 
            else if(a[i][p-1]%2!=0){
                a[i][p]=a[i][p-1]*3+1;
                }
        }
 for(j=0;j<n;j++){
     b[j]=a[j][0];
     for(i=0;i<n;i++){
         for(m=0;m<c[i];m++){
             if(a[j][0]!=a[i][0]){
                if(a[j][0]==a[i][m])
                    b[j]=0;
            }
         }
     }
 }
    sort(b,b+n,greater<int>());
        for(i=0;i<n;i++)
    {
        if(b[i]!=0){
            cout << b[i];
            if(b[i+1]!=0)
                cout <<" ";
            else cout <<endl;
        }
    }
    return 0;
}