qq_57851424 2021-08-20 17:03
浏览 28
已结题

PAT Basic Level 1005(继续3n+1猜想) 测试点4(C语言)显示答案错误,求指导

如题,代码如下

#include <stdio.h>

int f(int x);

int main()
{
    int K;
    scanf("%d", &K);
    int input[K], i;
    for(i = 0; i<K; i++){
        scanf("%d", &input[i]);
    } 
    int state[K];//记录各个输入数据的状态,仅当state = 0时输出该数据 
    for(i=0; i<K; i++){
        state[i] = 0;
    }
    for(i=0; i<K; i++){
        if(state[i] == 0){
            int x = input[i];
            while(x != 1){
                x = f(x);
                int j;
                for(j = 0; j<K; j++){
                    if(input[j] == x){
                        state[j]++;//若数据input[i]被其他数据覆盖,则state[i]++ 
                    }
                }
            }
        } 
    }
    int output[K], count = 0;
    for(i=0; i<K; i++){
        if(state[i] == 0){
            output[count] = input[i];//输出未被覆盖数据 
            count++;
        }
    }
    int k, max, t;//下面为数据大小排序及输出 
    for(k = (count-1); k>=0; k--){
        max = output[0];
        t = 0;
        for(i=1; i<= k; i++){
            if(output[i] > max){
                max = output[i];
                t = i;
            }
        }
        int c = output[k];
        output[k] = max;
        output[t] = c;
    } 
    for(i=0; i< count; i++){
        printf("%d", output[count-1-i]);
        if(i<(count-1)){
            printf(" ");
        }
    }
    printf("\n");
    
    return 0;
} 

int f(int x){
    int ret;
    if(x%2){
        ret = 3*x+1;
    }else{
        ret = x/2;
    }
    return ret;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月28日
    • 创建了问题 8月20日

    悬赏问题

    • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
    • ¥20 网站后台使用极速模式非常的卡
    • ¥20 Keil uVision5创建project没反应
    • ¥15 mmseqs内存报错
    • ¥15 vika文档如何与obsidian同步
    • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
    • ¥15 陆空双模式无人机飞控设置
    • ¥15 sentaurus lithography
    • ¥100 求抖音ck号 或者提ck教程
    • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)