码迷,mamicode.com
首页 > 其他好文 > 详细

URAL 1225. Flags (dp)

时间:2015-03-07 15:46:37      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

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:
  1. Stripes of the same color cannot be placed next to each other.
  2. 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;
}



URAL 1225. Flags (dp)

标签:

原文地址:http://blog.csdn.net/u013446688/article/details/44116001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!