瓷砖铺放(递归)

 1 //问题描述
 2 //  有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?
 3 //  例如,长度为4的地面一共有如下5种铺法:
 4 //  4=1+1+1+1
 5 //  4=2+1+1
 6 //  4=1+2+1
 7 //  4=1+1+2
 8 //  4=2+2
 9 //  编程用递归的方法求解上述问题。
10 //输入格式
11 //  只有一个数N,代表地板的长度
12 //输出格式
13 //  输出一个数,代表所有不同的瓷砖铺放方法的总数
14 //样例输入
15 //4
16 //样例输出
17 //5
18 #include<iostream>
19 using namespace std;
20 int zq(int n){
21     int rs;
22     if(n==1)return 1;
23     else if(n==2)return 2;
24     else rs=zq(n-1)+zq(n-2);
25     return rs;
26 }
27 int main(){
28     int n;
29     cin>>n;
30     cout<<zq(n);
31     return 0;
32 }

原文地址:https://www.cnblogs.com/zq-dmhy/p/12236464.html

时间: 2024-08-01 09:32:26

瓷砖铺放(递归)的相关文章

蓝桥杯题目——瓷砖铺放

问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 4=2+2 编程用递归的方法求解上述问题. 输入格式 只有一个数N,代表地板的长度 输出格式 输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样例输出 5 #include<stdio.h> int j

算法训练 瓷砖铺放

时间限制:1.0s   内存限制:512.0MB 问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 4=2+2 编程用递归的方法求解上述问题. 输入格式 只有一个数N,代表地板的长度 输出格式 输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样例输出 5 impo

[ALGO-11] 瓷砖铺放

算法训练 瓷砖铺放 时间限制:1.0s   内存限制:512.0MB 问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 4=2+2 编程用递归的方法求解上述问题. 输入格式 只有一个数N,代表地板的长度 输出格式 输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样

蓝桥杯--算法训练 瓷砖铺放

问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 4=2+2 编程用递归的方法求解上述问题. 输入格式 只有一个数N,代表地板的长度 输出格式 输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样例输出 5分析过程:通过进行递推找出规律 1 12 1+1  23 1

瓷砖铺放 (状压DP+矩阵快速幂)

未加矩阵快速幂 50分 1 const dx:array[1..8,1..3] of longint= 2 ((-1,0,0),(-1,0,0),(1,0,0),(0,1,0),(-1,0,0),(-1,1,0),(0,1,0),(-1,0,1)); 3 dy:array[1..8,1..3] of longint= 4 ((0,1,0),(0,-1,0),(0,-1,0),(1,0,0),(0,1,-1),(0,0,-1),(1,0,-1),(0,1,0)); 5 mo=65521; 6 va

【USACO 1.4.1】铺放矩形块

[描述] 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 所有4个矩形块的边都与封闭矩形的边相平行,图1示出了铺放4个矩形块的6种方案.这6种方案是仅可能的基本铺放方案.因为其它方案能由基本方案通过旋转和镜像反射得到. 可能存在满足条件且有着同样面积的各种不同的封闭矩形,你应该输出所有这些封闭矩形的边长. (分类注解:这里的分类依据可以视为是不同的面积计算公式.) [格式] INPUT FORMAT: (file packrec.in)

poj 2411 Mondriaan&#39;s Dream 骨牌铺放 状压dp

题目链接 题意 用\(1\times 2\)的骨牌铺满\(H\times W(H,W\leq 11)\)的网格,问方案数. 思路 参考focus_best. 竖着的骨牌用\(\begin{pmatrix}0\\1\end{pmatrix}\)表示,横着的骨牌用\(\begin{pmatrix}1&1\end{pmatrix}\)表示. 则对于第\(i\)行,与之相容的第\(i-1\)行的状态需满足: 第\(i\)行是0的位置,第\(i-1\)行必须是1: 第\(i\)行是1的位置,第\(i-1\

UVa 11270 铺放骨牌(轮廓线DP)

https://vjudge.net/problem/UVA-11270 题意: 用1×2骨牌覆盖n×m棋牌,有多少种方法? 思路: 这道题目是典型的轮廓线DP题. 所谓轮廓线DP,就是以整行整列为状态进行动态规划时无法进行状态转移,那么此时就可以用到轮廓线,当然,这种方法只能使用在一个窄棋盘上,大了肯定是不行的,要超时! ' 轮廓线DP就是按照从上到下,从左到右的顺序进行状态转移,每个格子用二进制来表示状态,1代表的就是覆盖,0代表未覆盖. 以本题为例,如上图,我们现在要计算 k 格子,那么与

[USACO] 铺放矩形块 题解

题目大意: 给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠.所谓最小矩形指该矩形面积最小. 思路: 枚举矩形的安放顺序,再按照题目所给的图判断即可,主要要想到枚举. 代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int i,n,sum=10009,p[5],q[5],a[5],b[5]; 4 struct data { int x,y; }ans[10000]; 5 bool used[5]; 6 7 b