查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
<1>题问:小明要上楼,楼一共39台阶,他先迈左脚,最后一步迈右脚,左右脚交替上台阶,每一步可能上1个或者2个台阶,求他上完39个台阶一共有多少种走法?
<2>代码:
#include<iostream>
using namespace std;
int count = 0;
int choice[] = {1,2};
int c[100];
void dfs(int taijieshu,int step)
{
if(taijieshu <= 0)
{
/* if(taijieshu==0 && step%2==0) //+1 -1不一样嘛?
{
for(int i = 0;i < step;i++) //打印详细的上楼序顺
{
cout<<c[i];
}
cout<<endl;*/
count++;
}
return;
}
for(int i = 0;i <= 1;i++)
{
taijieshu -= choice[i];
c[step] = choice[i];
dfs(taijieshu,step+1);
c[step] = 0;
taijieshu += choice[i];
}
}
void main()
{
dfs(39,0);
cout<<count<<endl;
}
<3>运行结果截图:
文章结束给大家分享下程序员的一些笑话语录:
姿势要丰富,经常上百度!