01串
来源:互联网 发布:本子画师推荐 知乎 编辑:程序博客网 时间:2024/05/18 05:51
01串时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个,他希望你能帮帮他。
注:01串的长度为2时,有3种:00,01,10。
- 输入
- 第一行有一个整数n(0<n<=100),表示有n组测试数据;
随后有n行,每行有一个整数m(2<=m<=40),表示01串的长度; - 输出
- 输出不含有“11”子串的这种长度的01串共有多少个,占一行。
- 样例输入
223
- 样例输出
35
- 来源
- 原创
- 上传者
苗栋栋
思路:递推式:a[i] = a[i - 1] + a[i - 2],意思是,01串每增加一个长度,比如长度为4的01串,因为长度为2的01串不含11子串的情况是
00,01,10,故在这些串后面加01,就是长度为4的不含11子串的情况,又长度为3的01串不含11子串的情况是000,001,010,100,101,故在
这些串后面加0,也是长度为4的不含11子串的情况。为什么不在00和10后面加10,构成一个不含11子串的长度为4的字串呢?因为0010和1010会跟
001后加0,101后加0重复,不在000,010,100后面加1的理由同理。
#include<stdio.h>#define MAX 40int a[MAX] = {0,0,3,5};int main(){int i,j;int n, m;scanf("%d", &n);for(i = 0; i < n; i++){scanf("%d", &m);if(m <= 3)printf("%d\n",a[m]);else{for(j = 4;j <= m; j++)a[j] = a[j -1] +a[j -2];printf("%d\n", a[m]);}}return 0;}
0 0
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- 01串
- d3学习之(Data Visualization with d3.js Cookbook )二(第二章)
- 罗大柚OpenGL ES教程系列LessonTwo(Part 2):采用VAO绘制一个Cube
- libgdx——游戏音效
- Java枚举的七种常见用法
- Linux Documentation学习笔记 -- 写在最前面
- 01串
- 【DP入门】The Triangle
- Tez调研报告
- auto_ptr指针和explicit的使用
- Redis Redis(2.6版本以上) Hash 常用操作和方法详解
- javascript的操作笔记
- eclipse汉字太小问题
- gstreamer的gst-launch常用插件
- d3学习之(Data Visualization with d3.js Cookbook )三(第三章)