|
先不说算法,说说程序本身的问题:
你在第8行为d赋值,可是此时e, f, g 根本没有值,你让计算机怎么算?
要让程序能执行,那得把这一句移到11与12行中间,也就是变成这样:
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int a,b,c,d,e,f,g,h;
- a=1;b=2;c=3;
- h=0;
- for(e=0;e<=36;e++)
- for(f=0;f<=18;f++)
- for(g=0;g<=12;g++) {
- d=a*e+b*f+c*g;
- while(d==36)
- h++;
- }
- printf("%d",h);
- system("pause");
- return 0;
- }
复制代码
然后再说算法的问题:你这样计算只能算出每步1、2、3级爬36级台阶的组合数,而每一个组合中还有若干的排列(也就是爬法)。沙发给出的算法是比较简单直观的:爬到第n级的方法是爬到第n-3级、第n-2级、第n-1级的方法之和。给你列个表,就更清楚了。
台阶数 | 爬法 | 1
2
3
4
5
...
| 1
2
4
7=1+2+4
13=2+4+7
...
|
|
|