动态规划爬楼梯问题C语言代码
时间: 2023-07-08 15:20:26 浏览: 59
好的,下面是一个简单的动态规划爬楼梯问题的C语言代码实现:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n <= 1) {
return 1;
}
int dp[n+1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
int main() {
int n = 5;
printf("爬到第%d层楼梯的方案数为:%d\n", n, climbStairs(n));
return 0;
}
```
在这个代码中,我们定义了一个 `climbStairs` 函数,这个函数接收一个参数 `n`,表示要爬到第 `n` 层楼梯的方案数。首先判断如果 `n` 小于等于1,则只有一种方案,直接返回1。接着定义一个长度为 `n+1` 的数组 `dp`,用于存储不同层数的方案数。初始化 `dp[0]` 和 `dp[1]` 为1,然后用循环计算出从第2层到第n层的方案数,最后返回 `dp[n]` 即可。
在 `main` 函数中,我们测试了一个 `n` 等于5的例子,输出了爬到第5层楼梯的方案数。
相关问题
C语言动态规划求爬楼梯
动态规划求解爬楼梯问题的C语言代码如下:
```c
#include <stdio.h>
int climbStairs(int n) {
int dp[n + 1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
int main() {
int n = 5;
int ways = climbStairs(n);
printf("There are %d ways to climb %d stairs.\n", ways, n);
return 0;
}
```
在上述代码中,我们使用一个一维数组`dp`来记录每个阶梯对应的爬楼梯方法数。其中,`dp[0]`和`dp[1]`的值都为`1`,因为到达第0或第1个阶梯的方法只有一种。然后,我们利用循环不断计算每个阶梯的方法数,直到计算到第`n`个阶梯为止。最终,返回`dp[n]`即可。
使用该代码,我们可以求解任意阶数的楼梯的爬楼梯方法数。
爬楼梯c语言AC代码
引用中的代码实现了一个爬楼梯的问题。下面是AC代码:
#include <stdio.h>
int main() {
int a, b, x, n, i;
scanf("%d",&n);
a = b = 1;
if (n == 1)
printf("1");
if (n >= 2) {
for (i = 1; i < n; i++) {
x = a + b;
a = b;
b = x;
}
printf("%d",x);
}
return 0;
}