• 算法:骨牌铺方格(递推)


    Description

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

    Input

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

    Output

    对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。

    Sample Input

    1
    3
    2
    

    Sample Output

    1
    3
    2
    

    HINT

    此题用long long 类型

    思路:

    n = 0时,不能没有块可以填充,f(0) = 0;

    n = 1时,只能竖着填充一块,f(1) = 1;

    n = 2时,可以竖着两块,横着两块,f(2) = 2。

    n = 3时,可以当成先选了一块竖着的,然后f(3 - 1) = f(2),或者先选两块横着的,然后f(3 - 2) = f(1),

    所以f(3) = f(3 - 1) + f(3 - 2) = f(2) + f(1) = 3;

    $f(n) = f(n - 1) + f(n - 2), n >2$

    AC代码:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(NULL);
    	cout.tie(NULL);
    	long long f[51] = {0, 1, 2};
    	for (int i = 3; i < 51; i++)
    		f[i] = f[i - 1] + f[i - 2];
    	int n;
    	while (cin >> n)
    		cout << f[n] << endl;
    	return 0;
    }
    
  • 相关阅读:
    python CreateUniqueName()创建唯一的名字
    node 创建静态服务器并自动打开浏览器
    基于jQuery 的插件开发
    Fetch
    纯css 来实现下拉菜单
    javascript模板引擎之
    jquery jsonp 跨域
    数据库增删改查
    Promise
    Vue.js
  • 原文地址:https://www.cnblogs.com/yanhua-tj/p/13996560.html
Copyright © 2020-2023  润新知