算法训练 瓷砖铺放 【递归】java
例如,长度为4的地面一共有如下5种铺法:
4=1+1+1+1
4=2+1+1
4=1+2+1
4=1+1+2
4=2+2
编程用递归的方法求解上述问题。
4
5
思路分析:
一开始这个题我想用递归去往一个数组中添加一和二,看是否在某一个时刻,数组内的和为N。这个思路并没有做出来。
参考了网上的代码,发现自己真的很菜。。。 由于这个题不需要输出组成的序列,只输出总的数目即可,所以每次递归是的变量加一或者加二,然后根据回溯法的思想,如果加上一小于等于N则调用pudiban(val+1),如果加上二小于等于N则调用pudiban(val+2),实际上不用判断val是否会超出N,因为在调用这一层函数的时候已经判断过了。
代码:
import java.util.Scanner;
public class Main瓷砖铺法 {
static Scanner scan = new Scanner(System.in);
static int N;
static int count = 0;
public static void main(String[] args) {
N = scan.nextInt();
pudiban(0);
System.out.println(count);
}
private static void pudiban(int val) {
if (val == N) {
count++;
return;
}
if (val + 1 <= N) {
pudiban(val + 1);
}
if (val + 2 <= N) {
pudiban(val + 2);
}
}
}
算法训练 瓷砖铺放 【递归】java的更多相关文章
- Java实现 蓝桥杯VIP 算法训练 瓷砖铺放
[题目描述]: 有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的 ...
- ALGO-11_蓝桥杯_算法训练_瓷砖铺放(递归)
问题描述 有一长度为N(<=N<=)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5 ...
- C语言 · 瓷砖铺放
算法训练 瓷砖铺放 时间限制:1.0s 内存限制:512.0MB 锦囊1 递归或递推. 问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长 ...
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
** 算法训练 字符串的展开 ** 题目: 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于"d-h" ...
- 试题 算法训练 区间k大数查询 java题解
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正 ...
- 瓷砖铺放 (状压DP+矩阵快速幂)
由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移. 这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态. 进行两遍bfs,分别为初始状态可以到达的状态 ...
- Java实现 蓝桥杯VIP 算法训练 非递归(暴力)
试题 算法训练 非递归 问题描述 当x>1时,Hermite多项式的定义见第二版教材125页.用户输入x和n,试编写"非递归"函数,输出对应的Hermite多项式的值.其中x ...
- Java实现 蓝桥杯 算法训练 递归求二项式系数
算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB 问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 ...
- 蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数
算法训练 6-2递归求二进制表示位数 时间限制:10.0s 内存限制:256.0MB 问题描述 给定一个十进制整数,返回其对应的二进制数的位数.例如,输入十进制数9,其对应的二进制数是1001 ...
随机推荐
- 有关PHP的可变函数
事情的起因是这样子的,最近看到一道题,问的是 <?php $_POST['a']($_POST['b']);?> 这句代码有什么问题,答案很明显因为PHP的可变函数这个特性,导致了任意代码 ...
- 一个很粗糙的XXXX
改dnsrecon的代码改来改去都获取不到想要的结果,也不知道是不是py中的正则和PHP的有神马不一样的地方,但是用RegexBuddy测的时候是正确的,想不通啊想不通.果断不改了,自己动手PHP ...
- Haproxy的应用
如上图所示,在 192.168.1.0/24 这个网段的客户端想要访问在 172.20.0.0/20 网段内的服务器,所有的通信又不想暴露在互联网上,因此可以在这两个网段内分别都放一台 Haproxy ...
- 【Eclipse】eclipse设置,为了更简单快捷的开发
保存时自动导包 Windows->Perferences->Java->Editor->Save Actions
- 探究Java中的引用
探究Java中的四种引用 从JDK1.2版本开始,Java把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用.本篇就来详细探究 ...
- 【攻略】如何在云开发中使用 Redis?
默认情况下,云开发的函数部署在公共网络中,只可以访问公网.如果开发者需要访问腾讯云的 Redis.TencentDB.CVM.Kafka 等资源,需要建立私有网络来确保数据安全及连接安全. 本文会演示 ...
- 【Amaple教程】2. 模块
正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的. 定义一个模块 一个模块由<module>标签对包含,内部分为template模板.J ...
- 提高开发效率之VS Code基础配置篇
背景 之前一直是只用WebStorm作为IDE来编写代码,但是由于: 手中的这台Mac接了两个显示器以后,使用WebStorm会有卡顿. WebStorm需要付费(虽然可以通过某方法和谐). 所以需要 ...
- @常见的远程服务器连接工具:Xshell与secureCRT的比较!!!(对于刚接触的测试小白很有帮助哦)
现在比较受欢迎的终端模拟器软件当属xshell和securecrt了. XShell绝对首选,免费版也没什么限制,随便改字体随便改颜色随便改大小随便改字符集,多窗口,也比较小巧,而SecureCRT界 ...
- javascript的装饰者模式Decorator
刚开始看这段代码有点绕,现在回过头来看,so easy! Function.prototype.before = function(beforefn){ var _self = this; retur ...