当前位置:首页 » 编程语言 » c语言计算n阶楼梯
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言计算n阶楼梯

发布时间: 2022-08-24 19:21:40

c语言编程 台阶问题

这是一道高精度的题目。
首先,题目要求每次允许上一个或两个台阶,实际上每个楼梯只要把前两个楼梯的值相加就可以了(也可以认为是一个斐波那契数列),但是100个楼梯会超出long long 只能使用高精度了。

或者还可以使用通项公式(高中内容)

Ⅱ 用c语言求从1阶到n阶楼梯可能用的方法数量,一次只能走一个或3个楼

这个问题应该这么考虑

  1. 对于1和3看作两种不同种类的物体,n可以包含K1个1和K2个3,这时候他们的方法数量为(K1 + K2)!/K1!/K2!

  2. 然后遍历所有的K1和K2的组合,于是可得最终的方法数。

示例如下(手写可能存在错漏,但是基本逻辑没有问题)

void main()

{

long n;

printf("Please input n: "

do {

scanf("%ld", &n);

if (n <= 0 || n > 100000)

printf("Input error, please input n again: ");

else

break;

}while (1);


long totalTime = 0;

for (int i = n , j = 0; i >= 0; i -= 3, j += 1)

{

long curTotalTime = 1;

int k = 0;

for (k = (i + 1); k < (i + j); k++)

curTotalTime = k *curTotalTime ;

for (k = 2; k <= j; k++)

curTotalTime = curTotalTime / k ;

totalTime +=curTotalTime ;

}

printf("The number of method is %ld", totalTime);

}

Ⅲ C语言 用递归法写爬楼梯 一次可以爬一级 可以爬两级 N级的话有多少种爬楼方法

好显然啊!
1级---1种
2级---2种
3级---3种
4级---5种
5级---8种
……

这是个斐波纳契数列
通项公式(就是N级有多少种):F(n)=[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5
C语言求法:参看http://2wdragon.blog.sohu.com/119664614.html

Ⅳ c语言计算走阶梯、

#include<stdio.h>
intf(intn)
{
if(n==1)return1;
elseif(n==2)return2;
elseif(n<3)return0;
else
{
returnf(n-1)+f(n-2);
}
}
voidmain()
{
intn;
printf("请输入楼梯阶数: ")
scanf("%d",&n);
printf("%d ",f(n));
}

Ⅳ 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,用C++或lua语言编一程序计算共有多少种不同的走法

intrecursive(intn)
{
if(n<=2)
returnn;
returnrecursive(n-1)+2*recursive(n-2);
}


intiterative(intn)
{
intf1=1,f2=2,f;
for(inti=3;i<=n;++i)
{
f=f2+2*f1;
f1=f2;
f2=f;
}
returnf;
}

Ⅵ 有n阶阶梯,每步可走1阶或2阶,求每一步走法,和有多少种走法,用C语言编程

其实就是数学的排列组合的问题。对排列组合求和。

我就不列出是怎样的排列了,就列出有几类排列组合,还有结果。

#include<stdio.h>
#include<stdlib.h>

inlinelongA(inta1,inta2)
{
intr=1;
for(inti=0;i<a2;i++)
r*=a1--;
returnr;
}

inlinelongC(intc1,intc2)
{
doubler=1;
intnc2=c2;
for(inti=0;i<c2;i++)
{
r*=c1--;
if(nc2>0)r/=nc2--;
}
return(long)r;
}

intmain()
{
intn;
longsum=0;//阶级数,结果
intmax2;//最大2步数
intnums1,nums2;//1的个数,2的个数
inti;
printf("stairs:0<n<40 ");
scanf("%d",&n);
if(n%2==0)
max2=n/2;
else
max2=(n-1)/2;
printf("maxstep2:%d ",max2);
for(i=0;i<=max2;i++)
{
inttemp;
nums2=i;
nums1=n-nums2*2;
printf("step1:%d,step2:%d ",nums1,nums2);
temp=C(nums1+nums2,nums2);//;sum+=C(nums1+nums2,nums1);
printf("ways:%d ",temp);
sum+=temp;
}
printf("finalways:%d ",sum);
return0;
}

Ⅶ C语言编程计算楼梯总阶数

#include<stdio.h>
main()
{
int i;
for ( i=1;i<300;i++)
{
if (i%5!=4)
{
continue ;
}
if (i%6!=5)
{
continue ;
}
if (i%7!=0)
{
continue ;
}
break;
}
printf("共有%d阶\n",i);
}

Ⅷ 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阶楼梯都不成问题。