01串——动态规划

原创 2012年03月22日 09:04:22

http://acm.nyist.net/JudgeOnline/problem.php?pid=252

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串共有多少个,占一行。
样例输入
2
2
3
样例输出
3
5
代码:
#include<stdio.h>
	int a[41];
int f(int m)
{
	if(m==2)
		return a[m]?a[m]:a[m]=3;
	if(m==3)
		return a[m]?a[m]:a[m]=5;
	else
		return a[m]?a[m]:a[m]=f(m-1)+f(m-2);
}
int main()
{
	int n;
	scanf("%d",&n);
	a[0]=0;a[1]=0;
	f(40);
	while(n--)
	{
		int m;
		scanf("%d",&m);
		printf("%d\n",a[m]);
	
	}
}

总结:与斐波那契差不多,动态规划主要玩的就是递归。

开始超时了,在别人的帮助下改了一些地方采用a>b?a:b;形式先将所有值都求出来再按照测试给的用例进行比较,不用每个测试数据都要进行一番递归调用了。比如,当第一次数据为38,第二次为39,还要重新开始运行。

经典算法——动态规划教程

  • 2010年01月30日 08:46
  • 763KB
  • 下载

教你彻底学会动态规划——进阶篇

在我的上一篇文章中已经详细讲解了动态规划的原理和如何使用动态规划解题。本篇文章,我将继续通过例子来让大家更加熟练地使用动态规划算法。     话不多说,来看如下例题,也是在动态规划里面遇到过的最频繁的...

矩阵连乘问题——动态规划法

  • 2011年12月17日 16:20
  • 4KB
  • 下载

每日一题(19)——数组分割(动态规划)

一、问题:       1. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为两个子数组,子数组的元素个数不限,并使两个子数组之和最接近。       2. 有一个无序...
  • Aiphis
  • Aiphis
  • 2015年08月14日 15:26
  • 215

ACM课程论文——详解动态规划

  • 2011年07月27日 21:22
  • 122KB
  • 下载

0-1背包问题——动态规划

  • 2008年11月16日 19:40
  • 836B
  • 下载

动态规划——洛谷1020_导弹拦截(1999年的)

题目测评网址:戳我打开 题目:题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高...

动态规划算法——张有为

  • 2008年12月17日 20:53
  • 8.16MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:01串——动态规划
举报原因:
原因补充:

(最多只允许输入30个字)