首页 > 其他分享 >爱因斯坦阶梯问题

爱因斯坦阶梯问题

时间:2024-10-09 21:49:30浏览次数:10  
标签:爱因斯坦 long 阶梯 问题 climbStairs 楼梯 C语言

爱因斯坦阶梯问题是一个著名的逻辑谜题,它描述了爱因斯坦提出的一个关于楼梯的智力题。这个问题的C语言实现通常涉及循环和条件判断。由于问题没有给出具体的描述,我假设你是指的爱因斯坦阶梯问题的一个常见版本:一个人爬楼梯,每次可以爬1步、2步或3步,问有多少种不同的方式可以爬到n阶楼梯。 下面是一个可能的C语言实现:

#include <stdio.h>
// 使用动态规划来解决这个问题
long long climbStairs(int n) {
    if (n <= 2) return n;
    if (n == 3) return 4;
    long long a = 1, b = 2, c = 4, d;
    for (int i = 4; i <= n; i++) {
        d = a + b + c;
        a = b;
        b = c;
        c = d;
    }
    return c;
}
int main() {
    int n;
    printf("请输入楼梯的阶数: ");
    scanf("%d", &n);
    printf("爬到%d阶楼梯的不同方式有: %lld\n", n, climbStairs(n));
    return 0;
}

这段代码定义了一个climbStairs函数,它使用动态规划的方法来计算爬到n阶楼梯的不同方式。在主函数main中,它从用户那里获取楼梯的阶数,并调用climbStairs函数来计算结果,然后打印出来。

标签:爱因斯坦,long,阶梯,问题,climbStairs,楼梯,C语言
From: https://blog.51cto.com/u_17048808/12201748

相关文章