zoukankan      html  css  js  c++  java
  • 递推和递归--骨牌

    题目描述

    在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:

    输入

    输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0< n<=50)。

    输出

    对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
     
    #include<stdio.h>  
    int main()  
    {  
        int n; 
        long long f[100] = {1,2};  
       while(scanf("%d", &n)!=EOF)  
        {  
        for(int i=2; i<n; i++)  
        {  
            f[i] = f[i-1] + f[i-2];  
        }  
        printf("%lld
    ", f[n-1]);  
        }  
        return 0;  
      
    }  
    

    思考:这个题第一次做就错了,哎呀~~~   不过仔细看看就发现有不合理的地方,第一次把f[100], 定义成了int型, 这下就出问题啦。。  为什么呢? 因为随着n的不断增大,f数组就会存不下了。。。。还有其实这个程序还可以改一下

    for(i=2; i<55; i++)
        {
            f[i] = f[i-1] + 2*f[i-2];
        }
        while(scanf("%d", &n)!=EOF)
        {
            printf("%lld
    ", f[n]);
        }

    因为n最大是50,所以可以先把下表为0~50的数先计算出来。(所以这里i<55,其实只要保证i<=50 即可,多存几个数也没事嘛微笑),这样就不用每输入一个数就存一遍啦。。

    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    [ python ] 线程的操作
    [ python ] 进程的操作
    RabbitMQ 集群
    RabbitMQ 实践及使用
    RabbitMQ 基础知识
    [ python ] FTP作业进阶
    [ python ] 项目一:FTP程序
    [ python ] 网络编程(2)
    [ python ] 网络编程(1)
    Linux 日志系统及分析
  • 原文地址:https://www.cnblogs.com/6bing/p/3931289.html
Copyright © 2011-2022 走看看