递归
深街酒徒*
专业气氛组成员
展开
-
1459. 奶牛体操 Java题解
输入样例:3 44 1 2 34 1 3 24 2 1 3输出样例:4样例解释一致的奶牛对为 (1,4)、(2,4)、(3,4)、(1,3)。解题思路:方法一:用递归实现组合型枚举,找出所有可能的奶牛对数,再依次对每一对奶牛进行校验,找出它们在每行的相对位置,并对符合条件的情况计数。方法二:题目中给出的数组,以一行为例,arr[i] = j : 表示第i名的位置是第j名奶牛。转化为loc[j] = i: 表示第j名奶牛所在的排列位置是第i个。由于二维数组的每原创 2022-03-19 13:01:48 · 595 阅读 · 0 评论 -
93. 递归实现组合型枚举 Java 题解
输入样例:5 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 解题思路:组合型递归不同于全排列,全排列中的数字均相同,而组合数中各种组合只能出现一次。全排列:一个数组存储排好序的状态,一个数组用于标志是否访问(去重),还需要一个参数表示当前正枚举到的第几个元素(坑位)。 组合数:一个数组存储排好序的状态,一个参数表示当前正枚举到第几个元素,还需要存储序列的前一个元素加.原创 2022-03-18 23:41:23 · 614 阅读 · 0 评论 -
94. 递归实现排列型枚举 Java题解
输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1解题思路:全排列问题。递归顺序:依次枚举每个位置放哪个数。Java题解:import java.util.*;public class Main { static int n; static boolean []vis;//访问数组 static List<Integer> list = new ArrayList<>();//用于存储每原创 2022-03-18 18:18:02 · 596 阅读 · 0 评论 -
92. 递归实现指数型枚举 java 题解
输入样例:3输出样例:322 311 31 21 2 3解题思路:可以使用递归求解,递归的顺序:从前往后依次考虑每个数字选或不选。递归的时间复杂都为,(假设一次性输出)Java代码:import java.util.Scanner;public class Main { static int n; static int []state;//0表示还未选,1表示已经选择,2表示不选择 static StringBuilder ans = ne..原创 2022-03-18 17:16:18 · 321 阅读 · 0 评论 -
算法训练 瓷砖铺放 java 题解 11
问题描述 有一长度为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原创 2022-02-03 21:22:13 · 501 阅读 · 0 评论 -
算法训练 幂方分解 java 题解 12
问题描述 任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20(21用2表示) 3=2+20 所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=210+28+25+2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2...原创 2022-01-23 08:00:00 · 221 阅读 · 0 评论 -
算法提高 超级玛丽 java 题解 165
问题描述 大家都知道"超级玛丽"是一个很善于跳跃的探险家,他的拿手好戏是跳跃,但它一次只能向前跳一步或两步。有一次,他要经过一条长为n的羊肠小道,小道中有m个陷阱,这些陷阱都位于整数位置,分别是a1,a2,....am,陷入其中则必死无疑。显然,如果有两个挨着的陷阱,则玛丽是无论如何也跳过不去的。 现在给出小道的长度n,陷阱的个数及位置。求出玛丽从位置1开始,有多少种跳跃方法能到达胜利的彼岸(到达位置n)。输入格式 第一行为两个整数n,m 第二行为m个整数,表示陷阱的位置输出格式原创 2021-12-09 13:14:37 · 267 阅读 · 0 评论 -
算法训练 递归输出数字三角形 java 题解 449
问题描述 输出一个n行的与样例类似的数字三角形,必须使用递归来实现输入格式 一个正整数数n,表示三角形的行数输出格式 输出一个与样例类似的n行的数字三角形,同一行每两个数之间用一个空格隔开即可(图中只是为防止题面格式化而用'_'代替空格)样例输入4样例输出___1__2_3_4_5_67_8_9_10数据规模和约定 n<=20解题思路:未使用递归,双层for解决。外层控制行,内层控制空格数和数字,注意每行最后不要留空格。递归原创 2021-10-18 18:23:11 · 779 阅读 · 0 评论 -
基础练习 回形取数 java 题解 25
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3 31 2 34 5 67 8 9样例输出1 4 7 8 9 6 3 2 5解题思路:要想按下,右,原创 2021-10-17 21:24:43 · 141 阅读 · 0 评论 -
算法训练 递归输出数字 java 题解 446
问题描述 写一个递归程序,输入一个整数,按从高位到低位的顺序输出其所有数字,每两个数字中间用空格格开。例如,输入整数12345,输出1 2 3 4 5。请进一步思考如何修改程序,才能输出数字取反后的整数,即在上例中输出整数54321。注意这里的进一步思考仅供个人练习,不要提交到作业程序中,即最后的结果不要输出54321,否则自动判题程序会出错输入格式 输入一个整数n(1<=n<=100000)输出格式 按从高位到低位的顺序输出其所有数字,每两个数字中间用空格隔开(最后多原创 2021-10-17 11:33:42 · 1614 阅读 · 2 评论 -
基础练习 FJ的字符串 java 题解
问题描述 FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗?输入格式 仅有一个数:N ≤ 26。输出格式 请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。样例输入3样例输出ABACABA解题思路:递归调用,找到递归出口和一般递推式即可。也可以循原创 2021-10-15 13:13:26 · 109 阅读 · 0 评论