递归
递归的一些题目
向上的yyy
路漫漫其修远兮,吾将上下而求索
展开
-
7-14 整数拆分——递归/推
给定一个整数n,将其无序拆分成最大数为k的拆分数,(n,k不超出100)要求:所有的拆分方案不重复。如当n=4,k=4时,一共有5种拆分方案,拆分如下:(2)4=1+1+2(3)4=1+3(4)4=2+2(5)4=4输入格式:每一行输入一组整数n,k,遇到键盘结束符^Z或文件结束符EOF时结束输入。输出格式:按行输出每组的拆分方案数。输入样例:4,45,4输出样例:56。原创 2022-11-27 12:33:52 · 897 阅读 · 0 评论 -
T1725 国王的魔镜——dfs
【代码】T1725 国王的魔镜——dfs。原创 2022-09-25 10:21:24 · 234 阅读 · 0 评论 -
T1677 [USACO Open08]农场周围的道路——递归
【代码】T1677 [USACO Open08]农场周围的道路——递归。原创 2022-09-24 22:19:15 · 262 阅读 · 0 评论 -
T1495 那些N位数——dfs
其实就是一个全排列,把1到p这些数,全排列在一个四位数上;在dfs中要注意是0到p,而不是到n,因为是枚举这p个数;原创 2022-09-24 21:31:20 · 148 阅读 · 0 评论 -
T1316 最小公倍数
先求最大公约数,然后用两数之积除以最大公约数即是最小公倍数;需要注意m、n的范围,一乘就爆int了,求最大公约数就是递归的板子:return b == 0?原创 2022-09-24 21:17:57 · 103 阅读 · 0 评论 -
T1208 放苹果
【代码】T1208 放苹果。原创 2022-09-24 20:48:49 · 74 阅读 · 0 评论 -
T1204 全排列——dfs
【代码】T1204 全排列——dfs。原创 2022-09-24 20:17:20 · 171 阅读 · 0 评论 -
1318:【例5.3】自然数的拆分 c++_dfs
【题目描述】任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。当n=7共14种拆分方法:7=1+1+1+1+1+1+17=1+1+1+1+1+27=1+1+1+1+37=1+1+1+2+27=1+1+1+47=1+1+2+37=1+1+57=1+2+2+27=1+2+47=1+3+37=1+67=2+2+37=2+57=3+4total=14【输入】输入n。【输出】按字典序输出具体的方案。【输入样例】7【输出样例】7=1+1+1+1+1+1+1原创 2022-03-08 20:42:40 · 753 阅读 · 0 评论 -
1209:分数求和 c++_递归_gcd
【题目描述】输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1,则直接用整数表示。如:56、103均是最简形式,而36需要化简为12,31需要化简为3。分子和分母均不为0,也不为负数。【输入】第一行是一个整数n,表示分数个数,1≤n≤10;接下来n行,每行一个分数,用"p/q"的形式表示,不含空格,p,q均不超过10。【输出】输出只有一行,即最终结果的最简形式。若为分数,用"p/q"的形式表示。【输入样例】21/21/3【输原创 2022-03-06 19:48:17 · 2664 阅读 · 0 评论 -
1206:放苹果 c++_递归
题目链接【题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【输入】第一行是测试数据的数目t(0<=t<=20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。【输出】对输入的每组数据M和N,用一行输出相应的K。【输入样例】17 3【输出样例】8分析此题将m个东西放入n个盒子,和1315:【例4.5】集合的划分有一点相似,但是在集合划分这一题中,原创 2022-03-06 15:34:17 · 1343 阅读 · 1 评论 -
1210:因子分解 c++_枚举_判断素数
【题目描述】输入一个数,输出其素因子分解表达式。【输入】输入一个整数 n (2≤n<100)。【输出】输出该整数的因子分解表达式。表达式中各个素数从小到大排列。如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。【输入样例】60【输出样例】2^235分析此题要素因子,所以要有一个判断素数的方法su;我们可以从2枚举到给的数字n,通过条件su(i)&&n%i==0进行处理,我们要有一个flag,来标记是否第一个输出的原创 2022-03-06 21:18:15 · 907 阅读 · 0 评论 -
1317:【例5.2】组合的输出 c++_组合型枚举_dfs_递归
【题目描述】排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你用递归的方法输出所有组合。例如n=5,r=3,所有组合为:1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5【输入】一行两个自然数n、r(1<n<21,1≤r≤n)。【输出】所有的组合,每一个组合占一行且其原创 2022-03-07 14:12:01 · 370 阅读 · 0 评论 -
1211:判断元素是否存在 c++_递归
题目链接【题目描述】有一个集合M是这样生成的:(1) 已知k是集合M的元素; (2) 如果y是M的元素,那么,2y+1和3y+1都是M的元素;(3) 除了上述二种情况外,没有别的数能够成为M的一个元素。问题:任意给定k和x,请判断x是否是M的元素。这里的k是无符号整数,x 不大于 100000,如果是,则输出YES,否则,输出NO。【输入】输入整数 k 和 x, 逗号间隔。【输出】如果是,则输出 YES,否则,输出NO。【输入样例】0,22【输出样例】YES分析通过对k不断进行操原创 2022-03-06 16:15:30 · 643 阅读 · 0 评论 -
蓝桥杯-练一练「排序」c++(归并排序)
题目描述题目来源给定一个长度为 N 的数组 A,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。输入描述第一行包含一个整数 N。第二行包含 N 个整数,表示数组 AA 的元素。输出描述输出共两行,每行包含 N 个整数,表示答案。输入输出样例示例 1输入51 3 2 6 5输出1 2 3 5 66 5 3 2 1运行限制最大运行时间:1s最大运行内存: 128M分析此题用冒泡、选择、插入 排序都会超时,因为数据量为10的5次幂,对于时间复杂度n方的算法都会原创 2022-02-26 16:31:56 · 835 阅读 · 0 评论 -
1202:Pell数列
【题目描述】Pell数列a1,a2,a3,…的定义是这样的,a1=1,a2=2,…,an=2an−1+an−2(n>2)。给出一个正整数 k,要求Pell数列的第 k 项模上 32767 是多少。【输入】第1行是测试数据的组数 n,后面跟着 n 行输入。每组测试数据占 1 行,包括一个正整数k(1≤k<1000000)。【输出】n 行,每行输出对应一个输入。输出应是一个非负整数。【输入样例】218【输出样例】1408分析1.直接递归如果直接递归,会超时的,因为此题原创 2022-02-24 21:39:02 · 1928 阅读 · 4 评论 -
1204:爬楼梯
【题目描述】树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。【输入】输入包含若干行,每行包含一个正整数N,代表楼梯级数,1≤N≤30。【输出】不同的走法数,每一行输入对应一行输出。【输入样例】5810【输出样例】83489分析1.递推由于爬楼梯,他可以每次走1级或者2级,故第i级楼梯,可以从i-1级上来,也可以从i-2级上来,故递原创 2022-02-25 10:37:31 · 347 阅读 · 0 评论 -
1201:菲波那契数列
【题目描述】菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波那契数列中第a个数是多少。【输入】第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1<=a<=20)。【输出】输出有n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数的大小。【输入样例】452191【输出样例】5141811分析1.递推此题递推式为:f[i]=f[i-1]原创 2022-02-24 21:06:29 · 479 阅读 · 0 评论 -
1200:分解因数(dfs)
【题目描述】给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1×a2×a3×…×an,并且1<a1≤a2≤a3≤…≤an,问这样的分解的种数有多少。注意到a=a也是一种分解。【输入】第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1<a<32768)。【输出】n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数。【输入样例】2220【输出样例】14分析分析一种情况,m=20,那么共有四种情况,分别为2原创 2022-02-24 20:52:23 · 617 阅读 · 0 评论 -
1198:逆波兰表达式(递归)
【题目描述】逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。【输入】输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。【输出】输出为一行,表达式的值。可直接用printf("%f\n", v)输出表达式的值v。【输入样例】11.0原创 2022-02-23 20:12:54 · 1189 阅读 · 0 评论 -
1316:【例4.6】数的计数(Noip2001)
【题目描述】我们要求找出具有下列性质数的个数(包括输入的自然数n)。先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:不作任何处理;在它的左边加上一个自然数,但该自然数不能超过原数的一半;加上数后,继续按此规则进行处理,直到不能再加自然数为止。【输入】自然数n(n≤1000)。【输出】满足条件的数。【输入样例】6【输出样例】6【提示】【样例解释】满足条件的数为如下所示:6162612636136分析此题就是求,给定的数,在左边加上一个自然数原创 2022-02-23 19:32:34 · 845 阅读 · 0 评论 -
1199:全排列(dfs)
【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a’ <‘b’ < … <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。【输入】只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。【输出】输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S=s1s2…sk,T=t1t2…tk,则S<T等价于,存在p(1<=p<原创 2022-02-24 10:39:02 · 1478 阅读 · 0 评论 -
1207:求最大公约数问题
【题目描述】给定两个正整数,求它们的最大公约数。【输入】输入一行,包含两个正整数(<1,000,000,000)。【输出】输出一个正整数,即这两个正整数的最大公约数。【输入样例】6 9【输出样例】3分析递归(辗转相除法)a/b后,b作为被除数,a%b作为除数,一直向下递归;当除数为0时,即找到最大公约数;如果求最小公倍数的话,我们只需要先求最大公约数,用两数之积除以最大公约数,即可求最小公倍数;#include <bits/stdc++.h>using name原创 2022-02-24 21:58:51 · 870 阅读 · 0 评论 -
1315:【例4.5】集合的划分
【题目描述】设S是一个具有n个元素的集合,S=⟨a1,a2,……,an⟩,现将S划分成k个满足下列条件的子集合S1,S2,……,Sk ,且满足:1.Si≠∅2.Si∩Sj=∅ (1≤i,j≤k,i≠j)3.S1∪S2∪S3∪…∪Sk=S则称S1,S2,……,Sk是集合S的一个划分。它相当于把S集合中的n个元素a1,a2,……,an 放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空。请你确定n个元素a1,a2,……,an 放入k个无标号盒子中去的划分数S(n,k原创 2022-02-19 21:38:25 · 456 阅读 · 0 评论 -
1222:放苹果
题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以下每行均包含二个整数M和N,以空格分开。1≤M,N≤10。【输出】对输入的每组数据M和N,用一行输出相应的K。【输入样例】173【输出样例】8。...原创 2022-07-17 12:41:35 · 258 阅读 · 0 评论