一、题目编号:
1012
二、简单题意:
在2×n的一个长方形方格,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数。
1012
二、简单题意:
在2×n的一个长方形方格,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数。
三、解题思路形成过程
用v[i]表示2*i的方格一共有组成的方法数,i块方格就是I-1块方格再加一块。横着铺,如果前面i-1块方格已经铺好,则第I块方格只有一种铺法;竖着铺,前面i-2块方格已经铺好,也只有一种铺法。因此,v[i]=v[i-1]+v[i-2]。另外,我们易知v[1]=1;v[2]=2。
用v[i]表示2*i的方格一共有组成的方法数,i块方格就是I-1块方格再加一块。横着铺,如果前面i-1块方格已经铺好,则第I块方格只有一种铺法;竖着铺,前面i-2块方格已经铺好,也只有一种铺法。因此,v[i]=v[i-1]+v[i-2]。另外,我们易知v[1]=1;v[2]=2。
四、感想
思路并不难想。跟上个题差不多,都是递推。但是第一遍提交后wa了,还是还需要考虑数据是否太大溢出的问题,改为long long类型就a了~
思路并不难想。跟上个题差不多,都是递推。但是第一遍提交后wa了,还是还需要考虑数据是否太大溢出的问题,改为long long类型就a了~
五、AC代码
#include<iostream>
using namespace std;
int main()
{
long long v[52];
v[1]=1;
v[2]=2;
int n;
for(int i=3;i<52;i++)
{
v[i]=v[i-1]+v[i-2];
}
while(cin>>n)
{
cout<<v[n]<<endl;
}
return 0;
}
using namespace std;
int main()
{
long long v[52];
v[1]=1;
v[2]=2;
int n;
for(int i=3;i<52;i++)
{
v[i]=v[i-1]+v[i-2];
}
while(cin>>n)
{
cout<<v[n]<<endl;
}
return 0;
}