C++算法之爬楼梯问题的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++算法之爬楼梯问题的代码相关的知识,希望对你有一定的参考价值。

如下代码是关于C++算法之爬楼梯问题的代码。

{
if(layer <= 0)
return;

return;  

}

(2)判断当前的层数是为1或者是否为2

{
if(layer <= 0)
return;

if(layer == 1){  
    printf_layer_one(layer, stack, top);  
    return;  
}  

if(layer == 2){  
    printf_layer_two(layer, stack, top);  
    return;  
}  

return;  

}

(3)对于2中提及的打印函数进行设计,代码补全

#define GENERAL_PRINT_MESSAGE(x)
do {
printf(#x);
printf("%d", stack[index]);
printf("n");
}while(0)

{
int index ;
GENERAL_PRINT_MESSAGE(1);
}

{
int index;

GENERAL_PRINT_MESSAGE(11);  
GENERAL_PRINT_MESSAGE(2);  

}

注:a)代码中我们使用了宏,注意这是一个do{}while(0)的结构,同时我们对x进行了字符串强转b)当剩下台阶为2的时候,此时有两种情形,要么一次跳完;要么分两次(4)当阶梯不为1或者2的时候,此时需要递归处理

{
jump_ladder(layer, stack, top);
}

{
if(layer <= 0)
return;

if(layer == 1){  
    printf_layer_one(layer, stack, top);  
    return;  
}  

if(layer == 2){  
    printf_layer_two(layer, stack, top);  
    return;  
}  

_jump_ladder(layer- 1, stack, top, 1);  
_jump_ladder(layer- 2, stack, top, 2);  

}

祝:这里在函数的结尾添加了一个函数,主要是递归的时候需要向堆栈中保存一些数据,为了代码简练,我们重新定义了一个函数。总结:1)这道题目和斐波那契数列十分类似,是一道地地道道的递归题目2)递归的函数也需要好好测试,使用不当,极容易堆栈溢出或者死循环。对此,我们可以按照参数从小到大的顺序依次测试,比如说,可以测试楼梯为1、2、3的时候应该怎么运行,同时手算和程序相结合,不断修正代码,完善代码。

以上是关于C++算法之爬楼梯问题的代码的主要内容,如果未能解决你的问题,请参考以下文章

算法简单题,吾辈重拳出击 - 动态规划之爬楼梯

leetcode50之爬楼梯

python爬虫实例详细介绍之爬取大众点评的数据

爬楼梯问题(算法)

代码随想录算法训练营第三十八天 | 509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯

代码随想录算法训练营第三十八天 | 理论基础 ,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯