骨牌铺方格(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;;
}

浙公网安备 33010602011771号