题目大意:让求长度为n的0 和 1 构成的串中不包含101子串的个数有多少。

这个题当时想了好久,以为是一个规律题,一直在推规律,最后还是wa了,上网一看原来是dp问题, 不过确实递推式挺巧妙的。

递推式dp[i] = 2 * dp[i - 1] - dp[i - 2] + dp[i - 3];

现在就来推一下这个式子,首先dp[i]就表示当长度为 i 的 的时候满足条件(就是串中不含101)的个数,dp[i] = 2 * dp[i - 1] - {最后两位是10的个数},其中2 * dp[i-1]就表示总数,最后两位是10的个数就等于 最后一位是0的个数减去倒数第二位是0的个数, 还有一个问题就是最后一位是0怎么求, 最后一个是零的个数就是dp[i-1], 因为当前位的总个数等于前一位乘2, 因为是只有0和1两种状态,所以是0的个数就是前一位的数所以 {最后两位是10的个数} = dp[i - 2] - dp[i - 3]; 所以这个式子最后就是dp[i] = 2 * dp[i - 1] - dp[i - 2] + dp[i - 3];

代码如下:

 1 #include<iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 int dp[10010];
 5 int main()
 6 {
 7     dp[0] = 0; dp[1] = 2; dp[2] = 4; dp[3] = 7;
 8     for (int i = 4; i < 10010; i++)
 9         dp[i] = (2 * dp[i - 1] -  dp[i - 2] +  dp[i - 3]) % 9997 ;
10     int n;
11     while (~scanf("%d", &n) && n != -1)
12     {
13         printf("%d\n", dp[n]);
14     }
15     return 0;
16 }

转载于:https://www.cnblogs.com/Howe-Young/p/4097304.html

简单dp ---HDU3485 Count 101相关推荐

  1. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

  2. hdu2067 简单dp或者记忆化搜索

    题意: 小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. POJ1088:滑雪(简单dp)

    题目链接:  http://poj.org/problem?id=1088 题目要求: 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小.求可以滑落的最长长度. 题目解析: 首先要先排一 ...

  4. 第三讲 数学与简单DP【完结】

    目录 1205. 买不到的数目 [数学结论题] 1211. 蚂蚁感冒 [模拟 / 推理] 1216. 饮料换购 [简单 / 模拟] 2. 01背包问题 [板子题] 1015. 摘花生 [简单DP] 8 ...

  5. hdu 2881(简单dp)

     题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...

  6. P1005 矩阵取数游戏(__int128模板/简单dp)

    转跳P1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}a i,j ​ 均为非负整数.游戏规则如下: 每次取数时 ...

  7. 最少拦截系统,简单dp,(学长说这是贪心?!。。。。。。也是醉了)

     description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天, ...

  8. HDU 1158【简单dp】

    题意:给你一个项目,需要几个月来完成买,同时也给你每个月最少需要的工人数.并且告诉你hiring,firing每个工人的钱数,以及每个月应付每个工人的工资.求项目完成时最小花费. 这是个简单dp,思路 ...

  9. 4.15 每周作业 —— 简单DP

    免费馅饼 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

最新文章

  1. Linux下task_struct详解
  2. 2020年,那些「引爆」了机器学习社区的热门论文、库和基准
  3. iptables+geoip来过滤阻挡来源IP
  4. easyui 中combogrid 实现多选,反选效果
  5. Java中调用Oracle中的存储过程的单元测试代码
  6. 内核隐藏进程(源码)
  7. 庞佐错觉_水晶球错觉
  8. android 输入法文本选择功能,Android的文本和输入---创建输入法(一)
  9. 全网最细Docker安装Minio,填满最新版大坑(强烈推荐收藏)
  10. 服务器不显示内存条,服务器检测不到内存条
  11. 95-190-742-源码-WindowFunction-AllWindowFunction
  12. windows10 ubuntu16.04 双硬盘安装双系统安装
  13. 【SAP HANA】关于SAP HANA中带层次结构的Attribute View创建、激活状况下在系统中生成对象的研究...
  14. 理解 __doPostBack--1
  15. 论单片机程序固件保护的重要性和方法
  16. html怎么隐藏项目符号,CSS-如何隐藏侧边栏列表中的项目符号?
  17. Java 开发规范文档
  18. java程序员的转正述职ppt
  19. 高效文件管理-Git管理个人文件指南
  20. Win11如何清除最近打开过的文件记录?

热门文章

  1. 用python画简单的动物-世上最慢“动物”之一,为啥程序员却很爱它?
  2. python跟java-Python和Java该学哪个?还在纠结的你看过来呀~
  3. python使用lxml及request爬取-python用lxml解析网页为什么不完整?
  4. python开发工资多少-Python开发工资多少
  5. python画图简单代码-用python进行简单的画图操作
  6. python教学视频下载-董付国老师Python精品教学,视频教程下载
  7. python代码示例下载-python爬取音频下载的示例代码
  8. python需要电脑配置-python3批量统计用户电脑配置
  9. python入门买什么书-大学生Python入门什么书好?
  10. 学python需要什么基础知识-学习python需要什么基础