请教一道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 展开
#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 展开
3个回答
展开全部
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);
}
这是我自己编的程序,你看看能不能看懂。希望能帮助到你
#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);
}
这是我自己编的程序,你看看能不能看懂。希望能帮助到你
追问
答案不对,你去那个网页试试就知道了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改为:
#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个台阶的个数和跳一个台阶的个数。再加上这三中台阶个数的组合方式,才得出他爬法。我想那将会是个很大的数。
#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,答案都一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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种。。楼主去验证一下吧
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种。。楼主去验证一下吧
追问
很遗憾,不对。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询