01串

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

解决代码:

import java.util.Scanner;

public class String_01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		while (n-- > 0) {
			int m = scan.nextInt();
			int a[][] = new int[41][2];
			a[2][0] = 2;
			a[2][1] = 1;
			for (int i = 3; i < a.length; i++) {
				a[i][0]=a[i-1][0]+a[i-1][1];//转移方程
				a[i][1]=a[i-1][0];//转移方程
			}
			System.out.println(a[m][0]+a[m][1]);
		}
	}
}
分析如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中的方式1是通过给定的01构造二叉树的方法。代码中使用了一个Node类来定义节点,然后通过循环遍历给定的01,根据规则创建二叉树。具体的步骤是,首先创建根节点,然后依次创建左子节点和右子节点,直到遍历完所有的元素。如果遍历完所有元素,则返回创建的二叉树。这种方式是通过迭代的方式构造二叉树。 引用\[3\]中的方式3也是通过给定的01构造二叉树的方法。代码中使用了一个TreeNode类来定义节点,然后通过逐个赋值的方式创建二叉树。具体的步骤是,首先创建根节点,然后依次创建左子节点和右子节点,直到遍历完所有的元素。这种方式是通过递归的方式构造二叉树。 综上所述,给定01构造二叉树的方法可以通过迭代或递归的方式实现。具体的实现方式可以根据实际需求和编程环境选择。 #### 引用[.reference_title] - *1* *3* [JS构造二叉树](https://blog.csdn.net/a777756/article/details/125027391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【数据结构】(二叉树 )线索构造二叉树](https://blog.csdn.net/qq_41934478/article/details/97961679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值