网格的铺设问题,怎么解决呢?用C语言实现

Problem Description
有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。

Input
输入的第一行包含一个正整数T(T<=20),表示一共有 T组数据,接着是T行数据,每行包含一个正整数N(N<=30),表示网格的大小是2行N列。

Output
输出一共有多少种铺设的方法,每组数据的输出占一行。

Sample Input
3
2
8
12

Sample Output
3
171
2731

0

2个回答

0
 #include <stdio.h>
#include<math.h>
int function(int n) {
    if (n == 1)
        return 1;
    if (n == 2)
        return 3;
    else
        return 2 * function(n - 2) + function(n - 1);
}
int main() {
    int n, tmp;
    scanf("%d", &n); 
    for (int i = 0; i < n; i++) {
        scanf("%d", &tmp);
        printf("%d\n", function(tmp));
    }
    return 0;
}

图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
铺地板问题
有一长度为 N(1&amp;lt;=N&amp;lt;=10)的地板,给定两种不同瓷砖:一种长度为 1,另一种长度为 2,数目不限。要将这个长度为 N 的地板铺满,一共有多少种不同的铺法?例如,长度为 4 的地面一共有如下 5 种铺法:4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+24=2+2 编程用递归的方法求解上述问题。 【输入】只有一个数 N,代表地板的长度 【输出】输出一个数,代表所...
一道铺地砖问题,关于向上取整算法。
一道铺地砖问题,关于向上取整算法。 标签(空格分隔): 编程错题 C 双学位高级语言程序设计 编程竞赛 原题如下: 【Problem description】 Theatre Square in the capital city of Berland has a rectangular shape with the size n × m meters. On the occasion
算法分析--贪心算法--最小生成树
贪心算法 贪心算法做的选择都是当前状态下的局部最好选择。 每次选择都将问题简化为规模更小的子问题。 优点:简单高效。 缺点:不是对所有问题都能找到整体最优解。 最小生成树问题                                               ...
用单链表解决约瑟夫问题 C语言实现
用单链表解决约瑟夫问题 C语言实现 用单链表解决约瑟夫问题 C语言实现
c语言用数组方法解决约瑟夫环问题
这个题我是用数组下标置0方法做的,类似单链表的性质,这个方法是模拟了游戏过程,是比较笨的代码,喜欢研究的朋友可以用相关算法来实现。时间复杂度为O(n^2),代码注释很详细,基本每一行我都写了注释,稍微有点基础的就可以看的懂
【算法】输油管道问题
输油管道问题 问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 编程任务: 给定n 口油井的位置,编程计算各油井到主管道之间的输油管道最...
深度优先搜索解决迷宫问题(c的实现)
经典栈队列以及深度优先算法的代码例子,便于学习和参考。
Leetcode 题解 - 搜索--BFS(1):计算在网格中从原点到特定点的最短路径长度
深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。 BFS 广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 第一层: 0 -&gt; {6,2,1,5} 第二层: 6 -&gt; {4} 2 -&gt; {} 1 -&gt; {} 5 -&gt; {3...
管道铺设最佳路径选择
需要在某个城市的n个居民区之间铺设煤气管道,则在这n个居民区之间只要铺设n-1条管道即可。假设任意两个居民区之间都可以架设管道,但由于地理环境的不同,所需经费不同。选择最优的施工方案能使总投资尽可能少,这个问题即为求网的“最小生成树”。
C语言实现:约瑟夫问题(数组和单链表2种方法)
约瑟夫问题 一个旅行社要从n个旅客中选出一名旅客,为他提供免费的环球旅行服务。旅行社安排这些旅客围成一个圆圈, 从帽子中取出一张纸条,用上面写的正整数m( 报到m时停止报数,报m的人被淘汰出列,然后从他顺时针方向上的下一个人开始重新报数,如此下去,直到圆圈中只剩下一个人, 这个最后的幸存者就是游戏的胜利者,将得到免费旅行的奖励。 输入说明,输入的第一行表示总的旅客数,输入的第二行表示
分治法解决凸包问题(C语言实现)
先预排序,预排序后最左和最右的点肯定是凸包中的点。然后可以递归的从内向外扩展凸包,在当前直线的2侧寻找最高点,最高点肯定在凸包中,这里涉及到一些数学知识: a,首先定义射线p1到p2的左侧:若p1 p2 p构成的顺序是逆时针,称p在射线的左侧 b,三角形p1 p2 p3的面积等于下列行列式的一半: 仅当p3在射线p1p2左侧时这个值才为正。 由此我们很容易求p1,p2左侧的最高点(离直线最远的点,这个点即凸包向外扩展得到的新顶点),得到一个最高点后,就得到了2条新边,继续向外扩展
约瑟夫问题
约瑟夫问题的来历 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Jos...
用C语言解决迷宫问题
迷宫问题是栈这一块很经典的问题。 迷宫大致可分为三种,简单迷宫、多通路迷宫:通路间不带环、多通路迷宫:通路间带环,其中带环多通路迷宫是最复杂的,解决它,要把栈与递归结合起来,下来我们来一个一个分析吧,先从简单迷宫开始。 简单迷宫 要解决这个问题并不难,我们只要从入口进入,当然要先检测这个入口是不是合法并且能不能走的通,如果走的通,把当前这一步的位置入栈,并且把它标记为2,然后继续向当前这...
线性时间选择算法的分治思想:邮局选址问题和士兵战队问题
一. 实验题目 1. 邮局选址问题 在一个按照东西和南北方向划分成规整街区的城市里,n 个居民点散乱地分 布在不同的街区中。用 x 坐标表示东西向,用 y 坐标表示南北向。各居民点的 位置可以由坐标(x,y) 表示。街区中任意 2 点(x1,y1) 和(x2,y2) 之间的距离可以用 数值|x1-x2|+|y1-y2| 度量。 居民们希望在城市中选择建立邮局的最佳位置,使 n 个居民点到邮局的距离...
【C语言】数据结构循环链表解决约瑟夫环问题
循环链表解决约瑟夫环问题 约瑟夫问题 假设有n个人围成一圈,然后对每个人按顺序编号1,2,3,…..,n,规定从1号按顺序开始报数,报到k的人出局,之后下一个人再从1开始报数,报到k的人在出局,一直进行下去,问:最后一个出局者为几号? 样例: 假设有8个人,每次报数报到4的人出局,则过程如下。 四号出局 八号出局 五号出局 二号出局 一号出局 三号出...
C语言实现迷宫问题
C语言编写的一个简单迷宫问题。其中用到了数据结构,相对简单
C语言实现迷宫问题的所有解
迷宫问题所有解:        //迷宫问题解答:                首先需要定义的变量:迷宫M  ,  迷宫的行R=7  ,  迷宫的列C=8  ,  还需要定义一个与迷宫M相同的二维数组t(用来表示迷宫这个格子已经走过了,走过赋值为1)  ,  以及记录方位的二维数组Move[4][2](f方位表示已经在代码中给出注释)  ,  定义一个栈stack[100][2](用来存储路径上...
C语言解决约瑟夫环问题 详细注释
约瑟夫环算法是: n 个人围成一圈,每个人都有一个互不相同的密码,该密码是一个整数值,选择一个人作为起点,然后顺时针从 1 到 k(k为起点人手中的密码值)数数。数到 k 的人退出圈子,然后从下一个人开始继续从 1 到 j (j为刚退出圈子的人的密码)数数,数到 j 的人退出圈子。重复上面的过程,直到剩下最后一个人。/*约瑟夫环*/ #include &amp;lt;stdio.h&amp;gt; #includ...
网格走法数目,c语言
题目描述有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。输入描述:输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。输出描述:输出包括一行,为走法的数目。示例1输入复制3 2 输出复制10解题思路:拿到这道题首先需要注意的是这是一个网格走法数目,所以我...
用C语言解决借书方案问题。
题目描述:小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法? 分析:实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。 代码如下: #include&amp;lt;stdio.h&amp;gt; int main() { int i, j, k;//对书编号i, j, k int count; count = 0; for (i=1; i&amp;lt;=5...
生产者消费者问题的C语言实现
实验六 生产者/消费者问题实验一、实验目的掌握Linux下生产者/消费者问题算法的实现 二、实验原理1.clone系统调用:功能:创建一个轻进程或线程用法:intclone (int (*fn)(void *arg),void *stack,int flag,void *arg); 其中,★fn是轻进程所执行的函数;stack是轻进程所使用的栈★flag是CLONE_VM,CLONE_FS,CLO...
操作系统-生产者与消费者问题的C语言实现
1.模拟用信号量机制实现生产者和消费者问题。 2.设计报告内容应说明: ⑴ 课程设计目的与功能; ⑵ 需求分析,数据结构或模块说明(功能与框图); ⑶ 源程序的主要部分; ⑷ 运行结果与运行情况分析; ⑸ 自我评价与总结:
【算法-1】输出网格图形
今天来写几行代码吧,其实是前段时间面试遇到的一道简单算法题,就此做一个简单的记录。 题目: 通过符号“|”(或) 和 符号“_”(下划线)输出特定行数和列数的网格图形; 直接上代码吧: C++ #include using namespace std; void displayGrid(int m, int n); int main() { int gridRow = 0
用C语言解决快速排序问题
快速排序分为三个部分:1,分解即分为三段  2,递归求解:通过递归进行排序  3,合并:将排好序的区间进行合并   递归进行排序 即:void QuickSort(){ if(p&amp;lt;r){ int q = Partition(Type ) QuickSort(a , p , q - 1) QuickSort(a , q + 1  , r) //分成了三段 } } Part...
迷宫问题——c语言栈实现
我们用一个二维数组表示迷宫的点,1能走,0不能走,用回溯法写,用一个简单一点的迷宫做事例: #define _CRT_SECURE_NO_WARNINGS 1 #include &amp;lt;assert.h&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #define N 6 //N*N的迷宫 #define length N...
找最近对的分治法 C语言实现
找最近对的分治法 C语言实现 时间复杂度是NlogN 分治法
C语言回溯法九宫格数独问题
Problem H 数独游戏 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 数独游戏规则 在9阶方阵中,包含了81个小格(九列九行),其中又再分成九个小正方形(称为宫),每宫有九小格。 游戏刚开始时,盘面上有些小格已经填了数字(称为初盘),游戏者要在空白的小格中填入1到9的数字, 使得最后每行、每列、每宫都不出现重复的数字,而且每一个游戏都只有一个
用栈实现汉诺塔问题
任意输入N个盘,在三个柱子上实现汉诺塔问题的非递归求解,用栈进行
python中GIL问题(多线程问题,调用的函数用C语言写)
python中GIL问题(多线程问题)
SudokuC语言编程(英文版)
使用C语言实现数独编程,解决数独问题和生成问题280多页,英文原版,给C语言学习者参看用
C语言实现约瑟夫环问题
一共有N个人,围成一圈,从一开始报数,数到M的人出局,然后重新开始报数。算出出局的人的顺序;如果最后只能剩下一个人,请问是几号? 代码: #include #include #define N 9 //游戏参与人数 #define M 3 //死亡数字//声明链表节点 typedef struct node { int data; struct node *next; }linkl
用指针解决约瑟夫问题
其实本文中的链表并不规范,只适用于本题,还有鄙人第一次发文,请多多指教 #include #include using namespace std; class J { public:  J(){};  string name;  J *pre;//前一个人  J *next;//后一个人 }; void Joseph(J *head,int n) {
Linux下利用信号量函数和共享内存函数和C语言实现生产者消费者问题
接上一篇文章 一、引言 此问题是操作系统中的一个经典的同步异步问题,是我们操作系统课程中非常重要的一部分。实验要求我们用C语言在Linux操作系统下利用信号量函数和共享内存函数实现经典的生产者消费者问题。也借此博客把所学知识记录下来。实验要求如下: 在Linux操作系统下用C实现经典同步问题:生产者—消费者,具体要求如下:  (1)一个大小为
【C语言】约瑟夫环(用单向循环链表解决)
约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。这里我用单向循环链表来解决这个问题。 我们先考虑几种情况: 当m=1和k=1的时候,要挨个删除链表中的结点。 在k!=1和m=1的情况下,指针必须先向后移动到k的位置,并且记住k的
c语言 分治法求解最近点对问题
最近对问题(二维平面上的点),编程实现用分治法求解。 最近点对算法: double cpair2(S) {       n=|S|;       if (n &amp;lt; 2) return 0; 1)、m=S中各点x坐标的中位数;      //构造S1和S2;      S1={p∈S|x(p)&amp;lt;=m},      S2={p∈S|x(p)&amp;gt;m} 2)、d1=cp...
操作系统 使用C语言实现生产者和消费者问题
生产者与消费者问题描述及原理在这里不赘述,这是用c语言简单实现了一下,加上代码不超过100行。 #include #include #define N 10 typedef int semaphore; /* 信号量是一种特殊的整型变量 */ semaphore mutex=1; /* 互斥访问 */ semaphore empty=N; /* 记录缓冲区中空的槽
C语言数据结构之管道浅析
管道是什么? 管道是先进先出的数据结构,相当于一个缓冲区; 数据长度一般是1Byte,这里设置管道为512Byte; 管道的作用是? 有时候需要一定长度的数据,不仅仅是1Byte; 实现思路:申请缓冲区 —》使用两个指针分别指向缓冲区的首地址和尾地址,例如begin,end —》要实现随时找到管道中任意一个成员,使用两个指针分别指向第一个成员(head)和最后一个成员(tail) ...
循环队列的应用——约瑟夫问题
约瑟夫问题 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 问题来历 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由...
C语言回溯法装载问题
Problem D 装载问题 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。 输入: 多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n 输出: 对于每个测例在单独的一
铁轨问题(栈操作)
问题:某城市有一个火车站,铁轨铺设如图6-1所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选...