zoukankan      html  css  js  c++  java
  • 算法:骨牌铺方格(递推)

    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;
    }
    
  • 相关阅读:
    Logistic 与 softmax
    opencv::KMeans图像分割
    opencv::KMeans方法概述
    opencv::opencv_traincascade.exe
    opencv::opencv_createsamples.exe
    opencv::视频人脸检测
    opencv实践::对象提取与测量
    opencv实践::透视变换
    opencv实践::对象计数
    opencv实践::对象的提取
  • 原文地址:https://www.cnblogs.com/yanhua-tj/p/13996560.html
Copyright © 2011-2022 走看看