月黑风高敲代码
2019-09-08 15:56
采纳率: 100%
浏览 312

pta 1005 的最后一个测试点为什么通过不了?

#include
#define N 1000
#include
void IniliB(bool * b, int n)
{
int i;
for(i = 0;i<n;i++)
{
b[i] = false;
}
}

void Print_1(int *key, int n)
{
int i;

for(i = 0;i<n;i++)
{
    printf("%d", key[i]);
    if(i!= n-1)
    {
        printf(" ");
    }
}

}

void Rank_1(int *key, int n)
{
int i, j, t;

for(i = 0;i<n-1;i++)
{
    for(j = 0;j<n-i-1;j++)
    {
        if(key[i]<key[i+1])
        {
            t = key[i];
            key[i] = key[i+1];
            key[i+1] = t;
        }
    }
}

}
int main()
{
int a[100], key[N], i, k ,n;
bool b[N];
int j = 0;

scanf("%d", &n);

IniliB(b, N);

for(i= 0;i<n;i++)
{
    scanf("%d", &a[i]);
}


for(i = 0;i<n;i++)
{
    k = a[i];
    while(k!=1)
    {

        if(k%2 == 0)
        {
            k /= 2; 
        }
        else
        {
            k = (3*k + 1)/2;
        }
        b[k] = true;
    }
}

for(i = 0;i<n;i++)
{
    if(b[a[i]] == false)
    {
        key[j] = a[i];
        j++;
    }
}

Rank_1(key, j);
Print_1(key, j);
return 0;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 月黑风高敲代码 2019-09-08 22:42
    已采纳

    void Rank_1(int *key, int n)
    {
    int i, j, t;

    for(i = 0;i<n-1;i++)
    {
    for(j = 0;j<n-i-1;j++)
    {
    if(key[j]<key[j+1])
    {
    t = key[j];
    key[j] = key[j+1];
    key[j+1] = t;
    }
    }
    }

    }

    点赞 评论
  • dabocaiqq 2019-09-08 16:35
    点赞 评论

相关推荐 更多相似问题