原题目:
主要思路:
仔细观察排列的方式,当列数为n时,可理解为以下两种情况:
- 由n-1列在最右侧加一列
- 由n-2列在最右侧加两行
讨论一下为什么没有考虑n-2列加两列的情况,因为n-2列加一列就相当于n-1列了,这些情况数已经包括在了情况1中。
源代码:
#include <iostream>
using namespace std;
int main()
{
int n;
unsigned long long int cal[55];
cal[1] = 1;
cal[2] = 2;
cal[3] = 3;
for(int i = 4; i <= 54; i++)
{
cal[i] = cal[i-1] + cal[i-2];
}
while(scanf("%d",&n) != EOF)
{
printf("%llu\n",cal[n]);
}
return 0;
}
Alex_497259 发布了4 篇原创文章 · 获赞 0 · 访问量 61 私信 关注