刷算法编程题
偶尔记录一下,自己刷题时是怎么写的
努力做一个code杠精
我就是个小垃圾
展开
-
总结(1)蓄水类问题:11. 盛最多水的容器、42. 接雨水、407. 接雨水 II、(补充:优先队列实现存储结构体的大小根堆)
1 用优先级队列实现存储结构体的大小根堆自我认为有这个基本上满足算法问题中关于大小根堆的使用了。在之前我们写过一篇博客实际应用中我们《借助于数组vector来建堆https://blog.csdn.net/weixin_41747893/article/details/106087209》。但是并没有满足实际应用,经常我们大小根堆里面放的并不是仅仅只有一个数或字符,可能放一个结构体,那么实现如下:(1)建立小根堆struct Node { int row; int col; int val;原创 2020-06-19 14:15:47 · 539 阅读 · 0 评论 -
【力扣】809. 情感丰富的文字-输入一组查询单词,输出其中可扩张的单词数量。
809. 情感丰富的文字有时候人们会用重复写一些字母来表示额外的感受,比如 “hello” -> “heeellooo”, “hi” -> “hiii”。我们将相邻字母都相同的一串字符定义为相同字母组,例如:“h”, “eee”, “ll”, “ooo”。对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或原创 2020-06-02 23:35:24 · 157 阅读 · 0 评论 -
【力扣】1377. T 秒后青蛙的位置 -给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下::
1377. T 秒后青蛙的位置给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下:在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。青蛙无法跳回已经访问过的顶点。如果青蛙可以跳到多个不同顶点,那么它跳到其中任意一个顶点上的机率都相同。如果青蛙不能跳到任何未访问过的顶点上,那么它每次跳跃都会停留在原地。无向树的边用数组 edges 描述,其中 edges[i] = [fromi, toi] 意味着存在一条直接连通 fro原创 2020-05-19 16:02:11 · 534 阅读 · 0 评论 -
【力扣】无重叠区间 -给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。
435. 无重叠区间给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输原创 2020-05-18 23:26:02 · 2355 阅读 · 0 评论 -
【力扣】太平洋大西洋水流问题-规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。 请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标
417. 太平洋大西洋水流问题给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要m 和 n 都小于150示例:给定下面的 5x5 矩阵:太平洋 ~ ~ ~ ~ ~1 2 2 3 (5)原创 2020-05-18 23:20:57 · 527 阅读 · 0 评论 -
【力扣】08 剧情触发时间:在战略游戏中,玩家往往需要发展自己的势力来触发各种新的剧情。一个势力的主要属性有三种,分别是文明等级(C),资源储备(R)以及人口数量(H)。在游戏开始时(第 0 天),三
LCP 08. 剧情触发时间在战略游戏中,玩家往往需要发展自己的势力来触发各种新的剧情。一个势力的主要属性有三种,分别是文明等级(C),资源储备(R)以及人口数量(H)。在游戏开始时(第 0 天),三种属性的值均为 0。随着游戏进程的进行,每一天玩家的三种属性都会对应增加,我们用一个二维数组 increase 来表示每天的增加情况。这个二维数组的每个元素是一个长度为 3 的一维数组,例如 [[1,2,1],[3,4,2]] 表示第一天三种属性分别增加 1,2,1 而第二天分别增加 3,4,2。所有剧情原创 2020-05-17 17:29:55 · 540 阅读 · 0 评论 -
【力扣】矩形面积 II 我们给出了一个(轴对齐的)矩形列表 rectangles 。找出平面中所有矩形叠加覆盖后的总面积。
850. 矩形面积 II我们给出了一个(轴对齐的)矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标,(x2,y2)是该矩形右上角的坐标。找出平面中所有矩形叠加覆盖后的总面积。 由于答案可能太大,请返回它对 10 ^ 9 + 7 取模的结果。示例 1:输入:[[0,0,2,2],[1,0,2,3],[1,0,3,1]]输出:6解释:如图所示。示例 2:输入:[[0,0,1000000000,10原创 2020-05-16 22:52:00 · 580 阅读 · 0 评论 -
机器人的运动范围(C++递归的方式)
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路碰到这种题毫无疑问就是动态规划或者递归...原创 2020-04-27 18:53:26 · 368 阅读 · 0 评论 -
矩阵中的路径:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进...原创 2020-04-26 23:52:59 · 302 阅读 · 0 评论 -
最长公共子串:给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。
最长公共子串和最长最长公共子序列不同的是最长公共子串要求必须是连续的。题目给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。输入描述:输入包括两行,第一行代表字符串srr1,第二行代表字符串str2。\left( 1\leq length(str1),length(str2) \leq 5000 \right)(1≤length(str1),...原创 2020-04-23 15:47:55 · 7881 阅读 · 0 评论 -
最长公共子序列长度和输出(史上注释最全,最完整动态规划方法的代码)(二级指针用法,在调用前开辟空间)
题目给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。输入描述:输出包括两行,第一行代表字符串str1,第二行代表str2。\left( 1\leq length(str1),length(str2) \leq 5000\right)(1≤length(str1),length(str2)≤5000)输出描述:输出一行,代表他们最长公共...原创 2020-04-23 13:35:40 · 498 阅读 · 0 评论 -
【剑指offer】序列化二叉树
实现两个函数,分别用来序列化和反序列化二叉树原创 2020-04-21 23:21:38 · 119 阅读 · 0 评论 -
【剑指Offer】按之字形顺序打印二叉树:,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路开始是参照二叉树层次遍历,在其中加了个栈进行之字遍历输出,后来发现有问题,将队列也改成栈之后就正确了.设出两个栈:stack<TreeNode*>mys1;//左右存stack<TreeNode*>mys2;...原创 2020-03-24 12:56:54 · 179 阅读 · 0 评论 -
【剑指Offer】把二叉树打印成多行:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};思路看这个题目之前首先来考虑一下,二叉树怎...原创 2020-03-22 22:26:15 · 428 阅读 · 0 评论 -
【剑指Offer】对称的二叉树:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
文章目录题目描述递归思路与代码非递归思路与代码队列实现非递归栈实现非递归题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。递归思路与代码用递归的话咱们需要增加一个递归函数bool IsSym(TreeNode* lef, TreeNode* rig) ;首先考虑出口:(1)当lef 与rig都等于空的时候,返回true...原创 2020-03-22 00:41:51 · 129 阅读 · 0 评论 -
【剑指Offer】二叉树的下一个节点:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。先来解释一下这个题目,说实话我第一下没看懂啥意思。意思就是说比如一个二叉树的中序遍历是ABCDEF,然后给你B,让你把C返回,给你D让你把E返回。这道题还有一个就是,节点A的父节点是A->next。总感觉这样表示怪怪的。思路我上面那么一解释题目...原创 2020-03-21 22:56:37 · 211 阅读 · 0 评论 -
【剑指Offer】正则表达式匹配(思路清晰)
题目重述:请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配思路:首先看到这个题我们要考虑到用递归较容易,思路比较清晰。(大家也可以尝试非递归,说不定我后...原创 2020-03-19 00:32:03 · 259 阅读 · 0 评论 -
【剑指Offer】表示数值的字符串(考逻辑周密性)
文章目录题目描述思路代码题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。思路除了空指针直接返回false ,之外分为三部分:1>在整数开始时遇到+/-号直接str++;2>...原创 2020-03-14 23:57:28 · 96 阅读 · 0 评论 -
【剑指Offer】字符流中第一个不重复的字符
文章目录题目描述思路:代码(代码没问题哈,但是麻烦大佬看一下我下面的一个问题,不胜感激)题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:碰到这种求次数...原创 2020-03-14 22:30:50 · 79 阅读 · 0 评论 -
【剑指Offer】把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0思路:个人感觉这道题的考点...原创 2020-03-14 20:59:27 · 120 阅读 · 0 评论 -
【剑指Offer】构建乘积数组:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*.
文章目录题目描述思路代码题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)解释题意 :B[0]=A[1] * ...原创 2020-03-14 00:49:02 · 240 阅读 · 0 评论 -
【剑指Offer】扑克牌顺子(比较简单)
文章目录题目描述思路:代码题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q...原创 2020-03-14 00:00:00 · 177 阅读 · 0 评论 -
【剑指offer】丑数:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。注意:我第一次把题目理解错了,是除1之外的数字只包含质因子2或3或5的因子才能叫做 丑数。像什么7、11、13、14、17都不能算。不包含质因子7的数字不一定是丑数啊。千万别理解错。思路:等我把题目读清...原创 2020-03-13 13:51:09 · 1566 阅读 · 0 评论 -
【剑指Offer】数组中重复的数字:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路和【数组中只出现一次的数字;统计数组中各数字出现的次数】都一个套路借用一个map容器用来计数,当第二次发现map中...原创 2020-03-12 01:18:48 · 272 阅读 · 0 评论 -
【剑指 Offer】翻转单词顺序列 ;将“I am a student.”,经翻转后为“student. a am I”。即句子中的单词位置倒置,而不改变单词内部的结构
题目描述编写函数,将“I am a student.”,经翻转后为“student. a am I”。即句子中的单词位置倒置,而不改变单词内部的结构思路针对本体有两种思路,大同小异。思路一:1-先进行单词内部翻转(结果为:I ma a .tneduts)2-然后把第一步的结果整体进行翻转(结果为 student. a am I)思路二:1-先进性整体翻转(结果为:.tnedut...原创 2020-03-09 21:53:47 · 275 阅读 · 0 评论 -
【剑指Offer】和为S的两个数。输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。看到这个题其实看起来是个很简单的题目,我首先想到的思路就是:思路首先明白该数组是个递增数组。1-用两个指针指该数组的两头 pl,ph2-当两个指针所指的值之和>S时,ph–;之和<S...原创 2020-03-08 23:04:42 · 184 阅读 · 0 评论 -
【剑指Offer】和为s的连续正数序列 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
题目重述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序...原创 2020-03-06 23:17:03 · 193 阅读 · 0 评论 -
【剑指Offer】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路思路(1):看到这个题目我第一思路就是将数组里面的数字进行一个全排列,然后再对全排列的所有数字进行比较取最小的;但是该方法费时,费空间。代码不值得用。思路(2):1-我们先把int型数组用to_stri...原创 2020-03-06 21:05:44 · 645 阅读 · 1 评论 -
【剑指Offer】数组中只出现一次的数字(统计数组中各数字的出现次数)
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。用C++ STL 来做数组中只出现一次的数字。以及统计数组中数字出现的次数。代码的具体解释都有。原创 2020-03-03 15:00:37 · 340 阅读 · 0 评论 -
【剑指Offer】连续子数组的最大和(菜鸟和大神的思路与代码)
题目重述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2020-03-02 20:18:09 · 76 阅读 · 0 评论 -
【剑指Offer】输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
用比较容易理解的方式解答:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)原创 2020-02-29 22:39:49 · 227 阅读 · 0 评论 -
【剑指Offer】给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。原创 2020-02-28 22:24:59 · 516 阅读 · 0 评论 -
输入一个链表,反转链表后,输出新链表的表头。
输入一个链表,反转链表后,输出新链表的表头。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { ...原创 2019-10-07 22:47:21 · 107 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点。
输入一个链表,输出该链表中倒数第k个结点。对于此题思路:首先定义两个指针p1,p2;i=0,i++;当i<k的时候,让p1先给后面走(p1=p1->next);当i>=k时,让p1,p2同时给后面走,此时p1和p2之间就相差k个,当p1走到最后的时候停下来,此时p2就是倒数第K个节点。(注意当最终p1走到最后的时候,若i<k,那么该链表长度小于k ,此时返回一个NULL...原创 2019-10-07 22:04:29 · 234 阅读 · 0 评论 -
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。方法1:再建一个数组,然后对原数组进行两次遍历,第一次遍历筛选出奇数放在新数组的前面;再遍历一次筛选出偶数放在新数组后面。class Solution {public: void reOrderArray(vector...原创 2019-10-06 22:18:19 · 115 阅读 · 0 评论 -
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路:针对此题首先要分为以下几种情况:1-base等于0时:结果恒等于0;2-exponent 等于0时:结果恒等于1;3-base和exponent都不等于0时:(1)exponent大于0,那就直接不断使base和base相乘expo...原创 2019-10-06 21:22:00 · 154 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution {public: int jumpFloorII(int number) { int result=2; if(number==1) return 1; if(number==2) return 2; return 2*jumpFloorII(nu...原创 2019-09-26 22:23:43 · 5683 阅读 · 7 评论 -
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:创建两个ArrayList,一个用来根据传进来的ListNode参数新建一个完整的ArrayList,另一个用来存储反转后的ArrayList。其中用到的ListNode类如下:public class ListNode { int val; ListNode next = nul...转载 2019-08-18 14:08:05 · 260 阅读 · 0 评论 -
约瑟夫环:设编号为1,2,…n的n个人围坐一圈,约定标号为k的人从1考试报数,数到m的那个人出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止
题目:(约瑟夫环)设编号为1,2,…n的n个人围坐一圈,约定标号为k(1<=k<=n)的人从1考试报数,数到m的那个人出列,他的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列(或者求最后剩余的一个人)。常用的有三种解法1-数组、2-循环列表、3-递归。第一种解法:用数组来对约瑟夫环求解。思路:定义一个数组,给其开辟空间,然...原创 2019-08-12 20:51:27 · 8777 阅读 · 0 评论