假设你爬楼梯,需要n阶才能到顶,每次可以爬1或2个台阶。可以有多少种爬法到楼,用C语言编写
时间: 2024-10-13 18:12:59 浏览: 4
这是一个典型的动态规划问题,可以用C语言解决。我们可以通过创建一个数组`dp`来存储每层到达的不同方式数,其中`dp[i]`表示到达第`i`阶楼梯的不同方法数。
以下是C语言的一个解决方案:
```c
#include <stdio.h>
int climbStairs(int n) {
// 初始化前两个值
int dp[100] = {0, 1, 2}; // 基本情况:0阶、1阶和2阶各有1种方法
// 从第三阶开始递推
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2]; // 根据动态规划原理,上一步要么是从i-1阶直接上来,要么是从i-2阶加1步上来
}
return dp[n];
}
int main() {
int steps;
printf("请输入楼梯阶数:");
scanf("%d", &steps);
int ways = climbStairs(steps);
printf("爬到楼顶的不同方法有 %d 种。\n", ways);
return 0;
}
```
当你运行这个程序并输入楼梯阶数,它将返回达到指定层数的所有不同爬楼梯方案数。
相关问题
用c语言实现爱因斯坦阶梯问题。设有一阶梯,每步跨 2 阶余 1 阶,每步跨 3 阶余 2 阶, 每步跨 5 阶余 4 阶,每步跨 6 阶余 5 阶,每步跨 7 阶刚好到顶。问该阶梯一共 有多少阶?
好的,这是一个有趣的问题。我们可以用 C 语言来解决它。代码如下:
```c
#include <stdio.h>
int main() {
int n = 0;
while (1) {
if (n % 2 == 1 && n % 3 == 2 && n % 5 == 4 && n % 6 == 5 && n % 7 == 0) {
printf("The ladder has %d steps.\n", n);
break;
}
n++;
}
return 0;
}
```
这个程序的核心是一个循环,每次增加一阶台阶,直到找到符合条件的台阶数为止。在循环中,我们使用了取模运算符 `%` 来判断当前台阶数是否符合条件。当找到符合条件的台阶数时,我们输出结果并跳出循环。运行程序,可以得到以下输出:
```
The ladder has 119 steps.
```
因此,该阶梯共有 119 阶。
scroll到顶缓冲
当页面滚动到顶部时,通过添加或删除显示类来改变导航栏的显示状态。在jQuery中,可以使用以下代码实现:
```javascript
$(document).scroll(function() {
var scrollY = $(document).scrollTop(); // 获取垂直滚动的距离
if (scrollY > winHeight) {
// 如果滚动距离大于窗口高度,说明已经滚动到顶部
$(".top-title").removeClass("hidden"); // 移除隐藏类
} else {
// 否则,添加隐藏类
$(".top-title").addClass("hidden");
}
});
```
这段代码首先获取页面垂直滚动的距离,然后判断是否滚动到顶部。如果滚动到顶部,就移除`hidden`类,使导航栏显示;否则,添加`hidden`类,使导航栏隐藏。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>