nyoj 252 01串

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

简单的动态规划


要计算不含有“11”子串的n长度的01串共有多少个,

n-1长度的01串有加0 or 加1两种方式来成为n长度的01串

1)加0肯定符合不含有“11”子串的要求。

2)加1的话只有在尾数为0的情况下才可以。n-1长度的01串尾数为0的情况不就是n-2长度的01串全部加0么!

所以,设这个对应关系是d,那么:

d(1)=2

d(2)=3

d(3)=d(2)+d(1)

d(4)=d(3)+d(2)

.....

依此实现,源代码很简单了:

import java.util.Scanner;



public class Main {
	public static void main(String...args){
		n = cin.nextInt();
		
		//打表
		map = new int[41];
		map[1] = 2;
		map[2] = 3;
		for(int i = 3; i <= 40; i++){
			map[i] = map[i-1] + map[i-2];
		}
		
		while(n-- != 0){
			m = cin.nextInt();
			System.out.println(map[m]);
		}
			
		}
		
	static int n, m;
	static int[] map;
	static Scanner cin = new Scanner(System.in);
		
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值