timus 1225 flags 基础DP 简单递推

                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

1代表白色

2.蓝色

3.红色

dp[1][j]表示选到第i个条纹,第i个为j这种颜色的

然后递推

注意:

1.要用 long long

2.蓝色不能放在最后面和最前面,只能在中间

 1 #include<iostream>
 2 #include<cstring>
 3
 4 using namespace std;
 5
 6 const int maxn=48;
 7
 8 long long dp[maxn][4];
 9
10 int main()
11 {
12     dp[0][1]=dp[0][2]=dp[0][3]=0;
13     dp[1][1]=dp[1][3]=1;
14     dp[1][2]=0;
15
16     for(int i=2;i<=45;i++)
17     {
18         dp[i][1]=dp[i-1][3]+dp[i-2][3];
19         dp[i][2]=dp[i-1][1]+dp[i-1][3];
20         dp[i][3]=dp[i-1][1]+dp[i-2][1];
21     }
22
23     int n;
24
25     while(cin>>n)
26     {
27         long long  sum=dp[n][1]+dp[n][3];
28
29         cout<<sum<<endl;
30     }
31     return 0;
32 }

时间: 2024-09-28 04:29:03

timus 1225 flags 基础DP 简单递推的相关文章

hdu4165(简单递推,实则卡特兰数的应用)

这道题之前自己做的时候并没有反应过来是求卡特兰数,当时是按递推来想的.后来查了下HDU4165,结果一看大标题就说是卡特兰数,自己想了想,还真是那么回事.主要还是对于卡特兰数用的不多,也就当时没立马反应过来了.下面介绍这道题我的思路,然后对卡特兰数再做一些补充. 本题题意:罐子里有N片相同的药片,开始的时候药片都是完整的一整片.然后一个每天从中任意取一片,如果该药片是完整的一整片,那么他会吃点半片,然后将剩余半片扔回罐里,如果恰好是半片,那他直接吃掉拿出来的半片.显然2N天后,他吃完全部N片药片

(hdu step 3.1.3)母牛的故事(简单递推)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 659 Accepted Submission(s): 481   Problem Descriptio

(hdu step 3.1.2)骨牌铺方格(简单递推:求用2*1的骨牌铺满2*n的网格的方案数)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 744 Accepted Submission(s): 478   Problem Descriptio

(hdu step 3.1.1)超级楼梯(简单递推:从第1级到第m级有多少种走法,每次只能走一步或两步)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 超级楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 652 Accepted Submission(s): 483   Problem Description

hdu-2045 简单递推 水

题意: 一行长度为n的方格,只能使用三种颜色R.P.G来填充,且满足相邻方块不能同色,首尾方块不能同色.给出n,输出满足条件的着色方案数. 思路: 简单递推,由n-1个方块推导出n个方块的情况,有以下两种情况: 1.第n-1个方块与第1个方块不同色,满足条件.直接在n-1的满足基础上添加第n个,且第 n个只有一种选择.即F[n-1]: 2.第n-1个方块与第1个方块同色,不满足F[n-1],退至F[n-2],此时添加第n个方块时有两种选择.即F[n-2]*2. 递推公式:F[n] = F[n-1

hdu5306The mook jong(简单递推)

BC #50#简单递推 看了很多讲解的递推没有很懂,还好zzuspy思路简单清晰: f(n):要放n个木桩,先考虑最后一个板砖如果放的话,the last one的前两个并不能放木桩,所以前n-3个板砖如果放木桩的话有f(n-3)中方案,如果不放木桩的话,有一种方案: 最后一个板砖如果不放的话,是f(n-1)中方案: 所以f(n)=f(n-1)+f(n-3)+1; 还有一个hack点是爆Int的问题,但是比赛时并没有找到可以hack的代码T-T The mook jong Accepts: 50

[ACM] hdu 3853 LOOPS (概率DP,递推)

LOOPS Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help her friend Madoka save the world. But because of the plot of the Boss Incubator, she is trapped in a labyrinth called LOOPS. The planform of the

UVa 825【简单dp,递推】

UVa 825 题意:给定一个网格图(街道图),其中有一些交叉路口点不能走.问从西北角走到东南角最短走法有多少种.(好像没看到给数据范围...) 简单的递推吧,当然也就是最简单的动归了.显然最短路长度就是row+col.求种数就从开始往后推. 由于第一行第一列也有可能是障碍点,所以初始化时要注意这一点,或者干脆就只初始化f[0][1]=1.i.j都从1开始递推到更方便.还有题目输入输出比较坑.输入我用的是sstream和stream,方便很多,要不还要按照字符串输入再手动转化成数字.输出让每组隔

URAL 1225. Flags (dp)

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: Str