URAL 1225 Flags dp练习
2015-08-26 19:20
441 查看
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:
对于此题有题目给出的条件很容易确定状态方程 对于已经有N个块且最后为白的状态 dp
[0];
1 如果后面加上红色块
dp[N+1][1] += dp
[0];
2 后面加上蓝色块,则蓝色后要补上红色
dp[N+2][1] +=dp
[0];
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll dp[50][2];
int main()
{
dp[1][0] = 1;
dp[1][1] = 1;
for(int i = 2; i <= 45; i++) dp[i][1] = dp[i][0] = 0;
for(int i = 1; i <= 45; i++)
{
dp[i+1][1] += dp[i][0];
dp[i+1][0] += dp[i][1];
dp[i+2][1] += dp[i][0];
dp[i+2][0] += dp[i][1];
}
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%I64d\n",dp
[0]+dp
[1]);
}
return 0;
}
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:
对于此题有题目给出的条件很容易确定状态方程 对于已经有N个块且最后为白的状态 dp
[0];
1 如果后面加上红色块
dp[N+1][1] += dp
[0];
2 后面加上蓝色块,则蓝色后要补上红色
dp[N+2][1] +=dp
[0];
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
ll dp[50][2];
int main()
{
dp[1][0] = 1;
dp[1][1] = 1;
for(int i = 2; i <= 45; i++) dp[i][1] = dp[i][0] = 0;
for(int i = 1; i <= 45; i++)
{
dp[i+1][1] += dp[i][0];
dp[i+1][0] += dp[i][1];
dp[i+2][1] += dp[i][0];
dp[i+2][0] += dp[i][1];
}
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%I64d\n",dp
[0]+dp
[1]);
}
return 0;
}
相关文章推荐
- 我决定把全球每个国家的音乐都听一听
- 自己实现的一个不会奇奇怪怪换行的TextView.
- Android 生成keystore
- iOS 如果刷新TableViewCell上得数据是空的 添加尾部"暂无数据提示"
- Android 开发之JSON数据解析
- hdu1874-畅通工程续
- WORD BYTE 相互转换
- Linux下手动配置firefox的搜索引擎
- 基于注解的 Spring MVC 简单入门
- mark jsp BigDicimal 小数保留
- 富文本(图文混排)—— TextKit & CoreText
- android自动化工具之--Monkey工具简单了解
- 【解决】SSH项目问题(1)--Could not initialize class net.sf.json.util.JSONUtils
- 关于输出用%lf和%f的问题
- 操作python对象的属性
- Android向sd卡写入文件的大概流程
- HDU1829 - A Bug's Life 分组并查集
- 仿qq向左滑动删除 案例 详解
- Linux常用命令之man/mv/shutdown/history
- 局域网其他电脑如何访问(ping通)虚拟机