1225. Flags
Time limit: 1.0 second
Memory limit: 64 MB
On the Day of the Flag of Russia a shop-owner decided to decorate the show-window of his shop with textile stripes of white, blue and red colors. He wants to satisfy the following conditions:
- Stripes of the same color cannot be placed next to each other.
- A blue stripe must always be placed between a white and a red or between a red and a white one.
Determine the number of the ways to fulfill his wish.
Example. For N = 3 result is following:
Input
N, the number of the stripes, 1 ≤ N ≤ 45.
Output
M, the number of the ways to decorate the shop-window.
Sample
input | output |
---|---|
3 |
4 |
题意:涂色问题。相邻颜色不能一样,蓝色只能在红白或白红之间出现。
解析:递推。
考虑第i个位置的颜色:若是红或白色,则只需要在i-1的后面加上一个白或红色即可;若是蓝色,则i-1必是红或白,则只需要在i-2的后面加上红或白即可。
必须用long long,否则会WA on Test 12.
AC代码:
#include <cstdio> long long f[50]; int main(){ f[1] = f[2] = 2; for(int i=3; i<=50; i++) f[i] = f[i-1] + f[i-2]; int n; while(scanf("%d", &n)==1){ printf("%lld\n", f[n]); } return 0; }
时间: 2024-12-14 10:02:51