
递归和递推
小王子y
互关啊!!
展开
-
蓝桥杯李白打酒(递归)
话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。答案:14#原创 2021-03-02 22:29:26 · 191 阅读 · 0 评论 -
第十一届蓝桥杯省赛 走方格(递推和递归两种方法)
在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第 1 至第 m 列,每一个点可以用行号和列号来表示。现在有个人站在第 1 行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。输入格式输入一行包含两个整数 n,m。输出格式输出一个整数,表示答案。数据范围1≤n,m≤30输入样例1:3 4输出样例1:2输入样例2:6 6输出样例2:原创 2021-02-11 15:17:17 · 339 阅读 · 0 评论 -
P1192 台阶问题(递推)
题目描述有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。输入格式两个正整数N,K。输出格式一个正整数,为不同方式数,由于答案可能很大,你需要输出ansmod100003后的结果。输入输出样例输入5 2输出 8说明/提示对于%20%的数据,有N ≤ 10, K ≤ 3;对于%40%的数据,有N ≤ 1000;对于%100%的数据,有N ≤ 100000,K ≤ 100。#include<bits/stdc++.h原创 2021-02-02 17:48:37 · 274 阅读 · 0 评论 -
UVA10944 Simple Addition(递归)
Lets define a simple recursive function F(n), whereF(n) = p(x) =n%10, if (n%10) > 00, if n = 0F(n/10), OtherwiseLets define another function S(p, q),S(p, q) = ∑qi=pF(i)In this problem you have to Calculate S(p, q) on given value of p and q.I原创 2021-01-20 01:45:07 · 258 阅读 · 0 评论 -
飞行员兄弟(两种方法)
“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个4х4的矩阵,您可以改变任何一个位置[i,j]上把手的状态。但是,这也会使得第i行和第j列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式输入一共包含四行,每行包含四个把手的初始状态。符号“+”表示把手处于闭合状态,而符号“-”表示把手处于打开状态。至少一个手柄的初始状态是关闭的原创 2020-12-25 10:03:18 · 184 阅读 · 0 评论 -
费解的开关(递推 有点复杂)
你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成:0111111001原创 2020-12-24 23:51:21 · 283 阅读 · 0 评论 -
递归实现组合型枚举
从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式两个整数 n,m,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 5 7排在1 3 6 8前面)。数据范围n>0n>0 ,0≤m≤n ,n+(n−m)≤25输入样例:5 3输出样例:1 2 31 2 41 2 51 3 41 3原创 2020-12-21 18:52:49 · 146 阅读 · 0 评论 -
递归实现指数型枚举
从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3#include <cstdio>#include <cstring>#include <原创 2020-12-21 18:18:06 · 319 阅读 · 0 评论 -
L2-3 完全二叉树的层序遍历
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。输出格式:在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得有原创 2020-12-09 01:36:50 · 1965 阅读 · 0 评论 -
蓝桥杯 牌型种类(暴力,递归)
小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 答案:3598180解法思想这个问题我们可以看成每种牌都可以抽0—4张,知道抽满13张为止,再统计总共有多少种情况。#include <iostream>using namespace原创 2020-12-08 22:13:37 · 605 阅读 · 0 评论 -
蓝桥杯 第39级台阶(两种递归顺序)
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。答案:51167078#include <iostream> using namespace std; int sum; //记录走法的总数void dfs(int原创 2020-12-07 18:42:29 · 1777 阅读 · 0 评论 -
PAT甲级真题1138 后序遍历
假设二叉树上各结点的权值互不相同且都为正整数。给定二叉树的前序遍历和中序遍历,请你输出二叉树的后序遍历的第一个数字。输入格式第一行包含整数 NN,表示二叉树结点总数。第二行给出二叉树的前序遍历序列。第三行给出二叉树的中序遍历序列。输出格式输出二叉树的后序遍历的第一个数字。数据范围1≤N≤500001≤N≤50000输入样例:71 2 3 4 5 6 72 3 1 5 4 7 6输出样例:3#include <iostream>#include <unord原创 2020-12-01 22:36:13 · 310 阅读 · 0 评论 -
PAT甲级真题1020 树的遍历(递归)
一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。输入格式第一行包含整数 NN,表示二叉树的节点数。第二行包含 NN 个整数,表示二叉树的后序遍历。第三行包含 NN 个整数,表示二叉树的中序遍历。输出格式输出一行 NN 个整数,表示二叉树的层序遍历。数据范围1≤N≤301≤N≤30输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2#include<iostream>#i原创 2020-12-01 18:51:19 · 297 阅读 · 0 评论 -
[蓝桥杯][算法训练]未名湖边的烦恼(递归)
题目描述每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入两个整数,表示m和n输出一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5#include<iostream>using name原创 2020-11-15 01:35:46 · 199 阅读 · 0 评论 -
蛇行矩阵(递归做法)
题目描述蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。输入本题有多组数据,每组数据由一个正整数N组成。(N不大于100)输出对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211#include<bits/stdc++.h>using namespace std;void print(int n,int原创 2020-11-09 12:55:32 · 458 阅读 · 0 评论