用C语言完成,使用二维数组
时间: 2024-03-17 10:47:06 浏览: 19
下面是使用C语言,使用二维数组实现的爬楼梯问题解法:
```c
#include <stdio.h>
int climbStairs(int n) {
int dp[n+1][2];
dp[0][0] = 1;
dp[0][1] = 0;
dp[1][0] = 0;
dp[1][1] = 1;
for (int i=2; i<=n; i++) {
dp[i][0] = dp[i-1][0] + dp[i-1][1];
dp[i][1] = dp[i-2][0] + dp[i-2][1];
}
return dp[n][0] + dp[n][1];
}
int main() {
int n = 5;
int res = climbStairs(n);
printf("The number of ways to climb %d steps is %d\n", n, res);
return 0;
}
```
这里我们使用了一个二维数组dp,其中dp[i][0]表示爬到第i级楼梯,且最后一步是1级的方法数,dp[i][1]表示爬到第i级楼梯,且最后一步是2级的方法数。
根据状态转移方程:
dp[i][0] = dp[i-1][0] + dp[i-1][1];
dp[i][1] = dp[i-2][0] + dp[i-2][1];
可以得到上面的代码实现。时间复杂度为O(n),空间复杂度为O(n)。
相关问题
使用c语言字符串二维数组如何初始化
使用C语言字符串二维数组进行初始化的方法如下:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[3][10] = {"Hello", "World", "C"};
for(int i=0; i<3; i++)
{
printf("%s\n", str[i]);
}
return 0;
}
```
在上面的代码中,我们定义了一个 char 类型的二维数组 str,其中有 3 行 10 列,也就是可以存储 3 个长度为 10 的字符串。
在初始化时,我们可以使用花括号 {} 来为每个字符串赋值。在这个例子中,我们将 "Hello"、"World" 和 "C" 分别赋值给了数组的前三行。
最后,我们用 for 循环遍历数组,并使用 printf 函数输出每个字符串。
使用C语言打印杨辉三角二维数组
以下是使用C语言打印杨辉三角二维数组的代码:
```c
#include <stdio.h>
int main()
{
int n, i, j, a[100][100];
printf("请输入杨辉三角的行数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
if (j == 0 || j == i) {
a[i][j] = 1;
} else {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
```