江风与火 2022-01-16 16:52 采纳率: 50%
浏览 25
已结题

c语言 The 3n + 1 problem ,可以通过样例,但依然错误。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

请考虑以下算法以生成数字序列。以整数 n 开头。如果 n 为偶数,则除以 2。如果 n 为奇数,则乘以 3 并加 1。使用新值 n 重复此过程,并在 n = 1 时终止。例如,将为 n = 22 生成以下数字序列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 推测(但尚未证明)对于每个整数 n,此算法将终止于 n = 1。尽管如此,这个猜想仍然适用于至少1, 000, 000的所有整数。对于输入 n,n 的循环长度是生成的数量,最多包括 1。在上面的示例中,循环长度 22 为 16。给定任意两个数字 i 和 j,您将确定 i 和 j 之间所有数字(包括两个端点)的最大循环长度。
输入将由一系列整数对 i 和 j 组成,每行一对整数。所有整数将小于 1,000,000 且大于 0。
对于每对输入整数 i 和 j,输出 i、j 的顺序与它们在输入中出现的顺序相同,然后是 i 和 j 之间整数的最大循环长度。这三个数字应用一个空格分隔,所有三个数字都在一行上,每行输入都有一行输出。
样例输入
1 10
100 200
201 210
900 1000
样例输出
1 10 20
100 200 125
201 210 89
900 1000 174

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int shzi(int x, int y);
int main()
{
    int i, j = 0;
    while (~scanf("%d %d", &i, &j))//while (scanf("%d%d",&n,&m)!=EOF)也是为了没有输入时跳出循环。
    {
        shzi(i, j);
        printf("%d %d %d", i, j, shzi(i, j));
    }
    return 0;
}
int shzi(int x, int y)
{
    int i = 0;
    int count = 0;
    int maxcount = 0;
    if (y < x)
    {
        int temp = 0;
        temp = x;
        x = y;
        y = temp;
    }
    for (i = x; i <= y; i++)
    {
        int p = i;//保存i变量,不然后面i值变化了就没办法正常for循环了
        if (i == 1)//当i=1时不进入循环所以没办法算一次
        {
            count++;
        }
        else
        {
            while (i != 1)
            {
                if (i % 2 == 0)
                {
                    i = i / 2;
                }
                else
                {
                    i = i * 3 + 1;
                }
                count++;
            }
            count++;//i也算一次,但是while循环会忽略i
        }
        if (maxcount < count)
        {
            maxcount = count;
        }
        i = p;//赋值给i,继续正常循环
        count = 0;//清零,避免count一直加。才可以准确计算每个i的count
    }
    return maxcount;
}

  • 写回答

2条回答 默认 最新

  • 关注

    printf("%d %d %d", i, j, shzi(i, j));这里,需要加一个\n

    printf("%d %d %d\n", i, j, shzi(i, j));//加上\n回车,否则,所有输出都在一行了
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月31日
  • 已采纳回答 1月23日
  • 创建了问题 1月16日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么