骨牌铺方格(HDOJ2046)

原题链接:http://www.cnblogs.com/supersnow622/admin/EditPosts.aspx?opt=1

解题分析:设第n个位置时有f(n)种放置的方法,则第n-1个位置时有f(n-1)种放置的方法。

当放入第n个位置时,要考虑两种情况:

1、第n个位置的砖竖着放,则前n-1块砖放得正好填满,有f(n-1)种放法

2、第n个位置的砖横着放,则前n-2块砖放得正好填满,有f(n-2)种放法

所以f(n)=f(n-1)+f(n-2)

代码如下:

#include<iostream>
using namespace std;
int main()
{
    _int64 arr[51];
    arr[1]=1;
    arr[2]=2;
    for(int i=3;i<=50;i++)
    {
      arr[i]=arr[i-1]+arr[i-2];
    }
    int n;
    while(cin>>n)
      cout<<arr[n]<<endl;;
}

 

 

posted @ 2013-03-25 14:21  supersnow0622  Views(146)  Comments(0)    收藏  举报