1012

来源:互联网 发布:手机做微课用什么软件 编辑:程序博客网 时间:2024/05/28 05:14

题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数

思路:老师上课讲过一个类似的题,但比这个题要难,要想铺满2*n的长方形的,应该从后面向前推,即dp[i]=dp[i-1]+dp[i-2];还应该列出最前面的两个,即dp[1]=1,dp[2]=2;此题就很容易解出来了,本题没有退出的条件,我人为设置了输入0为退出的条件,程序最后还是a了

感想:acm题的难度感觉不如以前了,特别是这几道题特别水


#include<iostream>

using namespace std;
long long dp[50];
int main()
{
    int n;
    dp[1] = 1;
    dp[2] = 2;
    int flag = 2;
    while (cin >> n&&n)
    {
        if (n <= flag)
            cout<<dp[n]<<endl;
        else
        {
            for (int i = flag + 1; i <= n; ++i)
                dp[i] = dp[i - 1] + dp[i - 2];
            cout << dp[n] << endl;
        }
    }
    return 0;
}

0 0