上一次楼梯就C一下 上一个楼梯就那个一下

博主:网友网友05-047090

温馨提示:这篇文章已超过35天没有更新,请注意相关的内容是否还可用!

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语言爬楼梯

#includestdio.h

int main()

{int i,n,T,a[31]={1,1,2};

 scanf("%d",T);

 for(i=3;i31;i++)

   a[i]=a[i-1]+a[i-2]+a[i-3];

 for(i=0;IT;i++)

 {scanf("%d",n);

  printf("%d\n",a[n]);

 }  

 return 0;

}

算法设计 爬楼梯类型,共n阶楼梯,一次最多爬m阶,用JAVA或者C或者C++

循环,,,,,好多循环,,,,哇,,,,实现了

上一次楼梯就C一下 上一个楼梯就那个一下

#includestring.h

#includeiOStream

#includestack

using namespace std;

int main()

{

int n = 0, m = 0, sum = 0, cnt = 0;

cout"输入阶梯数:" endl;

cin n;

cout"输入最多爬的阶梯数:" endl;

cin m;

if (n = 0)

{

cout"就一种,上去了!" endl;

}

if (m = 0)

{

cout"你想上是不可能的!" endl;

}

int i;

stackint sk;

do

{

if (sum = n)

{

++cnt;

while (sum = n)

{

sk.push(1);

++sum;

}

}

if (!sk.empty())

{

sum -= sk.top();

sk.pop();

}

else

{

cout cnt endl;

return 0;

}

HHH:

if (!sk.empty())

{

i = sk.top();

}

else

{

cout cnt endl;

return 0;

}

if (i m)

{

++i;

}

else

{

if (!sk.empty())

{

sum -= sk.top();

sk.pop();

goto HHH;

}

else

{

cout cnt endl;

return 0;

}

}

if (!sk.empty())

{

sum -= sk.top();

sk.pop();

}

else

{

cout cnt endl;

return 0;

}

sk.push(i);

sum += i;

} while (1);

return 0;

}

用C语言编程,有20级台阶的楼梯,一次可以迈一级或者俩级台阶,那么要爬完此台阶有几种方法?(需要用

// 兵无常势,水无常形,情景模拟,递归实现

#include stdio.h

int count = 0;

void step(int s, int t)

{

    if (s  t)

    {

        step(s+1,t);

        step(s+2,t);

    }

    else if (s == t)

    {

        count ++;

    }

}

void main()

{

    int n;

    printf("Input n: ");

    scanf_s("%d",n);

    step(0, n);

    printf("The total path is %d\n", count);

    scanf_s("%c",n);

    getchar();

// 用step函数表示爬楼梯的动作,step(爬)(所到层,总层)

// 爬到了吗?没有,再爬一层或两层,

// 爬到了吗?是的,方法加一。 明白吗? 欢迎提问

微信扫一扫
The End

发布于:2023-05-04,除非注明,否则均为晓望资讯原创文章,转载请注明出处。