童年生活二三事

童年生活二三事

时间: 1000ms        内存:64M

描述:

Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。

输入:

输入包括多组数据。 每组数据包括一行:N(1≤N≤40)。 输入以0结束。

输出:

对应每个输入包括一个输出。 为redraiment到达第n阶不同走法的数量。

示例输入:

1
2
0

示例输出:

1
2

提示:

参考答案(内存最优[0]):

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int n,a,b,sum,i;
   while(scanf("%d",&n)!=0)
   {
        a=1,b=2,sum=0;
       for(i=3;i<=n;i++)
       {
           sum=a+b;
           a=b;b=sum;
       }
      if(n>2)
        printf("%d\n",sum);
      else if(n==1)
        printf("1\n");
      else if(n==2)
           printf("2\n");
   }
  return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<memory.h>
int a[45];
int total(int n)
{
	if(n==1||n==2)return n;
	else 
	{
		if(a[n]==0)
			a[n]=total(n-1)+total(n-2);
		return a[n];
	}
}
main()
{
	int n;
	int m;
	memset(a,0,(sizeof(a[0]))*45);
	scanf("%d",&n);
	while(n)
	{
		m=total(n);
		printf("%d",m);
		printf("\n");
		scanf("%d",&n);
	}
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注