zoukankan      html  css  js  c++  java
  • 超级台阶http://acm.nyist.net/JudgeOnline/problem.php?pid=76

     

    超级台阶

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

    有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?

    注:规定从一级到一级有0种走法。

     
    输入
    输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
    输出
    对于每个测试实例,请输出不同走法的数量。
    样例输入
    2
    2
    3
    样例输出
    1
    2
    来源
    [苗栋栋]原创
    上传者
    苗栋栋
    #include<stdio.h>
    int fun(int d,int a,int b)
    {
        int c;
        c=a+b;
        a=b;
        b=c;
        d-=1;  
      if(d==0)
    		return c;
        else if(d>0)
    		c=fun(d,a,b);      
    }
    int main()
    {
    	int a,b,n;
    	scanf("%d",&n);
    	while(n--)
    	{
    		int a,b,t,m,count;
    		scanf("%d",&m);
    		if(m==1)
    			count=0;
    		else if(m==2||m==3)
    			count=m-1;
    		else
    		{
    			a=1;
    			b=2;
                        m=m-3;
                         count=fun(m,a,b);
    		}
    		printf("%d
    ",count);
    	}
    
    	return 0;
    }
    

    以前好像见过这种类型的题,写几组数据就找到了规律,就是大于3时,第n个数的个数是前两个个数之和。递归那块可以被
    while(n-3>0)

    {

      count=a+b;

      a=b;

      b=count;

      m--;  

    }

    代替。

    #include<stdio.h>
    int main()
    {
    	int a,b,n;
    	scanf("%d",&n);
    	while(n--)
    	{
    		int a=1,b=2,t,m,count;
    		scanf("%d",&m);
    		if(m==1)
    			count=0;
    		else if(m==2||m==3)
    			count=m-1;
    		else
    		{
    			while(m-3>0)
                {
                    count=a+b;
                    a=b;
                    b=count; 
                    m--;
                }
    		}
    		printf("%d
    ",count);
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    python基础五——初识函数
    python基础三——基础数据类型
    Python基础二
    python基础一
    2.配置jenkins
    1.jenkins 安装
    Java8 新特性
    Java8 新特性
    1.什么是 Docker
    idea快捷键
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3269655.html
Copyright © 2011-2022 走看看