zhuhangqq 2019-11-01 09:08 采纳率: 0%
浏览 505

PAT 乙级1005 继续(3n+1)猜想 C语言 利用递归函数 第四个测试点答案错误 求大佬解答

#include<stdio.h>
int function(int p,int q);
int main(void){
    int n;
    scanf("%d",&n);
    int a[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d",&a[i]);
    }
    int ret[100]={0};
    int cnt=0;
    for (int i = 0; i < n; i++)
    {   
        int flag=1;
        int order=0;
        //除a[i]以外的其他数都不覆盖a[i]
        while (order<n)
        {   
            if (order==i)
            {
                order++;
                continue;
            }
            if(function(a[order],a[i])){
                flag=0;
            }
            order++;
        }
        if (flag)
        {
            ret[cnt]=a[i];
            cnt++;
        }
    }
    //由大到小排序
    for (int i = 0; i < cnt-1; i++)
    {
        int t;
        for (int j = i+1; j < cnt ; j++)
        {
            if (ret[i]<ret[j])
            {
                t=ret[i];
                ret[i]=ret[j];
                ret[j]=t;
            }

        }

    }
    //输出
    for (int i = 0; i < cnt-1; i++)
    {
        printf("%d ",ret[i]);
    }
    printf("%d",ret[cnt-1]);
    return 0;
}
//递归函数用于检测q是否被p覆盖
int function(int p,int q){
    if (p==1)
    {
        return 0;
    }else if(p==q){
        return 1;
    }
    if(p%2)
    {
        p=3*p+1;
    }else
    {
        p/=2;
    }
    return function(p,q);
}
  • 写回答

2条回答 默认 最新

  • 大紫明宫空离境 2019-11-01 10:39
    关注

    int a[n]; 你确定这能通过编译?C貌似没有这样的声明吧

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题