HDU 3485 Count 101
来源:互联网 发布:java string搜索 编辑:程序博客网 时间:2024/05/12 21:34
Problem Description
You know YaoYao is fond of his chains. He has a lot of chains and each chain has n diamonds on it. There are two kinds of diamonds, labeled 0 and 1. We can write down the label of diamonds on a chain. So each chain can be written as a sequence consisting of 0 and 1.
We know that chains are different with each other. And their length is exactly n. And what’s more, each chain sequence doesn’t contain “101” as a substring.
Could you tell how many chains will YaoYao have at most?
We know that chains are different with each other. And their length is exactly n. And what’s more, each chain sequence doesn’t contain “101” as a substring.
Could you tell how many chains will YaoYao have at most?
Input
There will be multiple test cases in a test data. For each test case, there is only one number n(n<10000). The end of the input is indicated by a -1, which should not be processed as a case.
Output
For each test case, only one line with a number indicating the total number of chains YaoYao can have at most of length n. The answer should be print after module 9997.
Sample Input
34-1
Sample Output
712HintWe can see when the length equals to 4. We can have those chains:0000,0001,0010,00110100,0110,0111,10001001,1100,1110,1111解题思路:简单递推题dp1[i] : 为满足不出现101的前提下最后一位是0的方案数dp2[i] : 为满足不出现101的前提下最后一位是1的方案数dp[i] : 为总的方案数#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <string>#include <vector>#include <deque>#include <queue>#include <stack>#include <map>#include <set>#include <utility>#include <algorithm>#include <functional>using namespace std;const int maxn = 10010;const int mod = 9997;int dp1[maxn], dp2[maxn], dp[maxn];int main() { //freopen("aa.in", "r", stdin); dp1[1] = 1; dp1[2] = 2; dp2[1] = 1; dp2[2] = 2; dp[1] = dp1[1] + dp2[1]; dp[2] = dp1[2] + dp2[2]; for(int i = 3; i < 10000; ++i) { dp1[i] = (dp1[i-1] + dp2[i-1]) % mod; dp2[i] = (dp1[i-2] + dp2[i-1]) % mod; dp[i] = (dp1[i] + dp2[i]) % mod; } int n; while(scanf("%d", &n) != EOF) { if(n < 0) break; printf("%d\n", dp[n]); } return 0;}
0 0
- Count 101 hdu 3485
- Count 101 hdu 3485
- HDU 3485 Count 101
- hdu 3485 H - Count 101
- HDU 3485 Count 101(简单DP)
- HDU 3485 count 101 简单DP
- hdu 3485——Count 101
- HDU Count 101 解题报告
- HDOJ 3485 Count 101
- hdu 1223 Order Count
- HDU 4472 Count
- hdu 4472 count
- HDU 4472 Count
- HDU 4472 Count
- hdu 4472 Count
- HDU:3777 Page Count
- hdu 4472 Count dp
- hdu 4472 Count
- [置顶] js禁用回退键[backspace键]浏览历史跳转的解决办法
- [置顶] 自动更具数据库表来生成.java文件的小工具
- [置顶] java版多线程下载
- Hibernate的HQL使用Oracle的Regexp_like函数的方式
- Java环境变量设置
- HDU 3485 Count 101
- 用ViewPager实现广告栏
- ubuntu14.04安装mate
- Java基础 IO流 File Properties PrintWriter 序列流SequenceInputStream
- windows7 鼠标右键菜单出现在光标左边
- color
- 联诚发(LCF)派礼物,平平安安过端午
- 变量名和地址之间的关系
- Eclipse各种抓狂问题集锦(一)