题目地址:​​点击打开链接​

思路:第N张牌的排列可以又N-1张牌的排列再在末尾加上一张竖的牌。这样依然合法。也可以在N-2张合法排列的牌后面加上两张横着放的牌(如果竖着放就和上面一种重复了)。用__int64类型

AC代码:

#include <iostream>

using namespace std;

int main()
{
int i,n;
__int64 a[51] = {0,1,2};
for(i=3; i<=50; i++)
{
a[i] = a[i-1] + a[i-2];
}
while(cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}