dark_and_white 2021-10-13 18:01 采纳率: 100%
浏览 10
已结题

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;
}
  • 写回答

1条回答 默认 最新

  • dark_and_white 2021-10-13 18:57
    关注

    我自己又改了一下

    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;
    }
    
    评论

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 创建了问题 10月13日