第39台阶

如果我每一步迈上1个或两个台阶,先迈左脚,然后左右交换,最后一步迈右脚,也就是一共要走偶数步,
那么,上完39级台阶,有多少种不同的算法
 1 #include "stdio.h"
 2 int total=0;//计数
 3 int Sum(int num,int step)
 4 {
 5     if(num<0)
 6         return 0;
 7     if(num==0&&step%2==0)//不管走的是左脚还是右脚,只要走的步数是偶数即可
 8     {
 9         total++;
10         return 0;
11     }
12     Sum(num-1,step+1);
13     Sum(num-2,step+1);
14 }
15 
16 
17 //首先我们用逆向的思维 其实上楼下楼在这道题没有太大区别 
18 //然后 因为num-1无论还是-2都是在递归函数中 也无关左右脚 只要走的步数是偶数即可
19 //每次step都+1
20 int main(void)
21 {
22     int n;
23     printf("Enter n:");
24     scanf("%d",&n);
25     Sum(n,0); //从顶部算
26     printf("Total=%d
",total);
27     return 0;
28 }
 1 #include "stdio.h"
 2 int total=0;//计数
 3 int Sum(int num,int step)
 4 {
 5     if(num>39)
 6         return 0;
 7     if(num==39&&step%2==0)//不管走的是左脚还是右脚,只要走的步数是偶数即可
 8     {
 9         total++;
10         return 0;
11     }
12     Sum(num+1,step+1);
13     Sum(num+2,step+1);
14 }
15 int main(void)
16 {
17     Sum(0,0); //从底部算
18     printf("Total=%d
",total);
19     return 0;
20 }

 非递归:

 1 #include "stdio.h"
 2 long fact(int m,int n)
 3 {
 4     int i;
 5     double a,b,c;//因为阶乘数 m,n 稍大,阶乘结果变大
 6     a=b=c=1;
 7     printf("a=%.0f,b=%.0f,c=%.0f
",a,b,c);
 8     for(i=m+n;i>=1;i--)//求 m+n 的阶乘
 9         a=a*i;
10     for(i=m;i>=1;i--)//求 m 的阶乘
11         b=b*i;
12     for(i=n;i>=1;i--)//求 n 的阶乘
13         c=c*i;
14     return a/(b*c);
15 }
16 int main(void)
17 {
18     int i,j;
19     long sum=0;
20     for(i=1;i<=37;i++)
21         for(j=1;j<=19;j++)
22         {
23             if((i+j)%2==0&&(i+2*j)==39)//满足两只脚的走的总的步数为偶数且走的阶
24                 梯数总和为 39
25             {
26             sum+=fact(i,j);//求总的组合数
27             printf("%d %d
",i,j);//输出两只脚的种类数
28         } 
29     }
30     printf("%ld
",sum);
31     return 0;
32 }

 这么写可能有人看不懂  大体说一下

从1 到40 实际上了39个台阶 (好比从1到2上了一个台阶 那么从1到40上了39个)

这其中 如果第一步确定了左脚右脚 最后一步随之确定  也就是说 这两种情况压缩成了一种确定的情况

第一步是左 脚 只迈一步 我们要循环37次 因为39次中 最开始一次和最后一次的情况完全确定 39-2 

如果迈两步  38次是可变的 /2 = 19 所以循环19次 我们都遍历一遍 无非就是40*20的数量级罢了

原文地址:https://www.cnblogs.com/ranzhong/p/13735473.html