c语言爬楼梯
⑴ c语言 设计 爬楼梯的方法
我是学pascal的~只说得上来算法。
你说的
爬楼梯
是指有n阶楼梯,每次可以上1,2……,p阶(1<=p<=n),问走到最上面有多少种不同的走法吧?
这个就是
递推
啊~
设上i级台阶共有f(i)种不同的方法,很简单就可以知道f(1)=1,f(2)=2……
当i大于2时,分n种情况讨论:第一步上了1级台阶,第一步上了2级台阶,……第一步上了n级台阶。
如果第一步上了1级楼梯,那么还剩下i-1级楼梯,要走完这i-1级楼梯,一共有f(i-1)种方法。
如果第一步上了2级楼梯,那么还剩下i-2级楼梯,要走完这i-2级楼梯,一共有f(i-2)种方法。
……
如果第一步上了n级楼梯,那么还剩下i-n级楼梯,要走完这i-2级楼梯,一共有f(i-n)种方法。
所以,在第一种情况下有f(i-1)种不同走法,第二种情况有f(i-2)种不同走法……这n种情况既没有重复方案,也没有遗漏,因此得出f(i)=f(i-1)+f(i-2)+……+f(i-n)
接着就行了,200阶楼梯都不成问题。
⑵ c语言走楼梯
递归:
上n级楼梯必须先上n-1级楼梯,再step=2
如果step=1,就相当于先上n-1级楼梯了
或者先上n-2级楼梯,再step=1
//f(n)=f(n-1)+f(n-2)
//f(1)=1
f(2)=2
#include
"stdafx.h"
#include
<stdio.h>
int
f(int
n)
{
if(n==1)
return
1;
else
if(n==2)
return
2;
else
if(n<3)
return
0;
else
{
return
f(n-1)+f(n-2);
}
}
void
main()
{
int
n;
scanf("%d",&n);
printf("%d\n",f(n));
}
⑶ 用C语言编程,有20级台阶的楼梯,一次可以迈一级或者俩级台阶,那么要爬完此台阶有几种方法(需要用
//兵无常势,水无常形,情景模拟,递归实现
#include<stdio.h>
intcount=0;
voidstep(ints,intt)
{
if(s<t)
{
step(s+1,t);
step(s+2,t);
}
elseif(s==t)
{
count++;
}
}
voidmain()
{
intn;
printf("Inputn:");
scanf_s("%d",&n);
step(0,n);
printf("Thetotalpathis%d ",count);
scanf_s("%c",&n);
getchar();
}
//用step函数表示爬楼梯的动作,step(爬)(所到层,总层)
//爬到了吗?没有,再爬一层或两层,
//爬到了吗?是的,方法加一。明白吗?欢迎提问
⑷ c语言求助:爬楼梯,可以一次一步,也可以一次两步,走n级楼梯共有多少种方法下面的程序说明地方错了
#include <stdio.h>
int count(int n)
{
int i,j,sum=0,a,c1,c2,d1,d2;
if(n>0)
for(i=0;i<=n;i++)
for(j=0;j<=n/2;j++)
if(n==i+2*j)
{
c1=i+j;
d1=1;
c2=1;
d2=1;
for(a=0;a<i;a++)
{
c2*=c1--;
d2*=d1++;
}
sum+=c2/d2;
}
return sum;
}
void main()
{
int m,n;
printf("请输入楼梯阶数:");
scanf("%d",&n);
m=count(n);
printf("总共有%d种走法\n",m);
}
⑸ C语言爬楼梯
#include<stdio.h>
intmain()
{inti,n,T,a[31]={1,1,2};
scanf("%d",&T);
for(i=3;i<31;i++)
a[i]=a[i-1]+a[i-2]+a[i-3];
for(i=0;i<T;i++)
{scanf("%d",&n);
printf("%d ",a[n]);
}
return0;
}
⑹ 爬楼梯c语言问题,一次只能走一步或两步或三步
#includeint main(){int i,n,T,a[31]={1,1,2}; scanf("%d",&T); for(i=3;i<31;i++) a[i]=a[i-1]+a[i-2]+a[i-3]; for(i=0;i
#include <stdio.h>
int count(int n)
{
int i,j,sum=0,a,c1,c2,d1,d2;
if(n>0)
for(i=0;i<=n;i++)
for(j=0;j<=n/2;j++)
if(n==i+2*j)
{
c1=i+j;
d1=1;
c2=1;
d2=1;
for(a=0;a<i;a++)
c2*=c1--;
d2*=d1++;
printf("请输入楼梯阶数:");
scanf("%d",&n);
m=count(n);
printf("总共有%d种走法 ",m);
}
(6)c语言爬楼梯扩展阅读:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
⑺ C语言 爬楼梯的问题
用递归解决比较方便:
#include<stdio.h>
int fibonacci (int n)
{
if (n > 2)
return fibonacci(n - 1) + fibonacci(n - 2);
else
return 1;
}
int main()
{
int data[20];
int t;
int i;
printf ("Please input T and the nums: \n");
scanf ("%d", &t);
for (i=0; i<t; i++)
{
scanf("%d", &data[i]);
}
printf("The output: \n");
for (i=0; i<t; i++)
{
printf("%d\n", fibonacci (data[i]+1));
}
return 0;
}
/* 这是斐波那契算法的一个应用,你可以搜索一下 */