老鹰嘤嘤 2019-09-08 15:56 采纳率: 100%
浏览 409
已采纳

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

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料