请教一道C语言题。 10

可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有36个台阶,小明一共有多少种爬法呢?#include"s... 可爱的小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有36个台阶,小明一共有多少种爬法呢?
#include "stdio.h"
void main()
{
int a,b,c,d=1,e=2,f=3,SumA,SumB,SumC,SumD=0;
for(a=0;a<=36;a++)
{
SumA=d*a;
for(b=0;b<=36;b++)
{
SumB=b*e+SumA;
for(c=0;c<=36;c++)
{
SumC=c*f+SumB;
if(SumC==36)
SumD++;
}
}
}
printf("%d",SumD);
}
帮我看看这道题,再看看我编的这个哪里错了。
请各位在这个网页验证一下答案:
http://www.aha-c.com/tiaozhan/problems/view/10
展开
 我来答
兰兰_xin
2012-08-29 · TA获得超过166个赞
知道答主
回答量:53
采纳率:0%
帮助的人:55.2万
展开全部
50种
#include "stdio.h"
void main()
{
int i,j,k,n=0;
for (i=0;i<=36;i++)
for (j=0;j<=18;j=j+2)
for (k=0;k<=12;k=k+3)
if (36==i+j+k)
n++;
printf("%d\n",n);
}
这是我自己编的程序,你看看能不能看懂。希望能帮助到你
追问
答案不对,你去那个网页试试就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拖等鞍可cib95
2012-08-30
知道答主
回答量:16
采纳率:0%
帮助的人:5.2万
展开全部
改为:
#include "stdio.h"
void main()
{
int a,b,c,d=1,e=2,f=3,SumA,SumB,SumC,SumD=0;
for(a=0;a<=36;a++)
{
SumA=d*a;
for(b=0;b<=18;b++)
{
SumB=b*e+SumA;
for(c=0;c<=12;c++)
{
SumC=c*f+SumB;
if(SumC==36)
SumD++;
}
}
}
printf("%d",SumD);
}
36个台阶,如果每次爬都是爬3个台阶,就要爬12个3个台阶;如果每次爬都是爬2个台阶,就要爬18个2个台阶;如果每次爬都是爬1个台阶,就要爬36个1个台阶。所以3个台阶最多只有12个,2个台阶最多有18个,1个台阶最多有36个。这样改后的程序也只能得出他爬3个台阶的个数,爬2个台阶的个数和跳一个台阶的个数。再加上这三中台阶个数的组合方式,才得出他爬法。我想那将会是个很大的数。
追问
你的只不过比我那个简洁了,其实答案都一样,即使我设的最大值都36,都是都其大于那个值(18,12)时其实就不会等于36,答案都一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
武荆轲
2012-09-02 · TA获得超过1026个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:295万
展开全部
#include <stdio.h>
int main(void)
{
int i,j,k,num=0 ;
for(i=0;i<36;i++)
for(j=0;j<18;j++)
for(k=0;k<12;k++)
if(2*j+3*k+i == 36)
num++ ;
printf("方法:%d\n",num) ;
}

用的是枚举算法。。算出124种。。楼主去验证一下吧
追问
很遗憾,不对。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式