zoukankan      html  css  js  c++  java
  • 上台阶问题(递归,DFS)

    题目

    一共39层台阶。如果我每一步迈上1个台阶或者两个台阶,先迈左脚,再迈右脚,然后左右交换,最后一步迈右脚,也就是一共要走偶数步,那么,上完39级台阶,有多少种不同的方法?

    思路

    采用递归的思想,边界条件就是台阶上数小于0,返回0;台阶上等于0,而且步数恰好是偶数步,那么说明走完了所有台阶,方法加1.

    代码

    #include<stdio.h>
    #include<stdlib.h>
    
    int count_way = 0;
    
    int Sum(int left_stair, int step)
    {
    	if(left_stair < 0)
    		return 0;
    	if(left_stair == 0 && step % 2 == 0)
    	{
    		count_way++;
    		return 0;
    	}
    
    	Sum(left_stair - 1, step+1);//一次迈一层台阶 
    	Sum(left_stair - 2, step+1);//一次迈两层台阶 
    	 
     } 
    
    int main(void)
    {
    	int n;
    	printf("enter n:");
    	scanf("%d", &n);
    	Sum(n, 0);
    	printf("Total = %d
    ", count_way);
    	return 0;
     } 
    

  • 相关阅读:
    概率派VS贝叶斯派
    Numpy-数组array操作
    Numpy基础
    PCA基本原理
    编程语言
    卷积神经网络基础
    IntelliJ IDEA Merge
    Mybatis 问题总结
    Lambda用法
    Map键值对取值, key是在"|"转义, value是在::取值
  • 原文地址:https://www.cnblogs.com/wemo/p/10563551.html
Copyright © 2011-2022 走看看