![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序员面试指南188
菜鸡的博客
这个作者很懒,什么都没留下…
展开
-
CD 24 kmp算法
题目描述给定两个字符串str和match,长度分别为N和M。实现一个算法,如果字符串str中含有子串match,则返回match在str中的开始位置,不含有则返回-1若出现了多次,则按照升序输出所有出现位置[要求]时间复杂度为O(n)O(n)输入描述:第一行一个字符串str第二行一个字符串match输出描述:输出若干个数,分别为match在str中出现的位置,从0开始标号。若不存在输出-1示例1输入复制acbcbc输出复制2示例2输入复制acbcbcc输出复原创 2021-05-16 09:51:22 · 102 阅读 · 0 评论 -
CD 9 10 11 前缀和问题
题目描述给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度输入描述:第一行两个整数N, k。N表示数组长度,k的定义已在题目描述中给出第二行N个整数表示数组内的数输出描述:输出一个整数表示答案示例1输入5 01 -2 1 1 1输出3 #include<iostream> #include<algorithm> #include<map> using namespace std原创 2021-04-16 20:31:32 · 108 阅读 · 0 评论 -
CD 124 添加最少的字符让字符串变为回文字符串
题目描述给定一个字符串str,如果可以在str的任意位置添加字符,请返回在添加字符最少的情况下,让str整体都是回文字符串的一种结果。输入描述:输入包含一行字符串,代表str(1 \leq length_{str} \leq 5000)(1≤lengthstr ≤5000)。输出描述:输出一行,代表返回的字符串。示例1输入复制ABA输出复制ABA示例2输入复制AB输出复制ABA备注:时间复杂度O(n^2)O(n2),空间复杂度O(n^2)O(n2)原创 2021-04-16 16:51:31 · 292 阅读 · 0 评论 -
CD 63 最大的leftmax与rightmax之差的绝对值
题目描述给定一个长度为N(N>1)的整形数组arr, 可以划分成左右两个部分,左部分为arr[0…K],右部分为arr[K+1…N-1], K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值中,最大是多少[要求]时间复杂度为O(n), 空间复杂度为O(n)输入描述:第一行一个整数N,表示数组长度。接下来一行N个整数,表示数组内的数。输出描述:输出一个整数表示最优答案示例1输入复制52 7 3 1 1输出复制6说明当左部分为原创 2021-04-11 21:20:17 · 71 阅读 · 0 评论 -
CD 45 龙与地下城游戏问题
正整数n,m \left ( 1\leq n,m\leq 10^{3} \right )(1≤n,m≤103),接下来n行,每行m个整数,代表map_{ij} \left( -10^3 \leq map_{ij} \leq 10^{3}\right )mapij (−103≤mapij ≤103)。输出描述:输出一个整数,表示答案。示例1输入复制3 3-2 -3 3-5 -10 10 30 -5输出复制7示例2输入复制2 21 11 1输出原创 2021-04-11 20:35:05 · 100 阅读 · 0 评论 -
CD 33 最长公共子串
题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。输入描述:输入包括两行,第一行代表字符串srr1,第二行代表字符串str2。\left( 1\leq length(str1),length(str2) \leq 5000 \right)(1≤length(str1),length(str2)≤5000)输出描述:输出包括一行,代表最长公共子串。示例1输入复制1AB2345CD12345EF输出复制2345备注:思路:见书2原创 2021-04-10 09:53:02 · 49 阅读 · 0 评论 -
CD 25 最长递增子序列
题目描述给定数组arr,设长度为n,输出arr的最长递增子序列。(如果有多个答案,请输出其中字典序最小的)输入描述:输出两行,第一行包括一个正整数n(n<=100000),代表数组长度。第二行包括n个整数,代表数组arr \left(1 \leq arr_i \leq 1e9 \right)(1≤arri ≤1e9)。输出描述:输出一行。代表你求出的最长的递增子序列。示例1输入复制92 1 5 3 6 4 8 9 7输出复制1 3 4 8 9示例2输入复制5原创 2021-04-09 20:58:40 · 77 阅读 · 0 评论 -
CD 41 边界都是1的最大正方形大小
题目描述给定一个N \times NN×N的矩阵matrix,在这个矩阵中,只有0和1两种值,返回边框全是1的最大正方形的边长长度、例如0 1 1 1 10 1 0 0 10 1 0 0 10 1 1 1 10 1 0 1 1其中,边框全是1的最大正方形的大小为4 \times 44×4,所以返回4[要求]时间复杂度为O(n^3)O(n3),空间复杂度为O(n^2)O(n2)输入描述:第一行一个整数N。表示矩阵的长宽。接下来N行,每行N个整数表示矩阵内的元素输出描述:输原创 2021-04-08 21:05:01 · 140 阅读 · 0 评论 -
CD 169 找到搜索二叉树中错误的两个节点
题目描述一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)ps:节点的编号就是该节点的值。输出描述:请按升序输出这两个错误节点的值。示原创 2021-04-06 21:53:27 · 70 阅读 · 0 评论 -
CD 168 二叉树的按层打印与ZIgZag打印
题目描述给定一颗二叉树,分别实现按层和 ZigZag 打印二叉树。ZigZag遍历: 意思是第一层从左到右遍历,第二层从右到左遍历,依次类推。输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)输出描述:先输出按层打印,再输出按ZigZag打印。示例1输入复制8 11 2原创 2021-04-06 20:49:03 · 184 阅读 · 0 评论 -
CD 173 根据后序数组重建二叉搜索树
题目描述给定一个有 n 个不重复整数的数组 arr,判断 arr 是否可能是节点值类型为整数的搜索二叉树后序遍历的结果。输入描述:第一行一个整数 n,表示数组的长度。第二行 n 个整数 arr_i。输出描述:如果是搜索二叉树后序遍历的结果则输出 “true”,否则输出 “false”。示例1输入复制31 3 2输出复制true这到题其实是判断是否是二叉搜索树,判断标准: 最后一个数a[ end ]为标准,找到a[ less ](数组中最后一个小于a[ end ]的数),找到a原创 2021-04-05 22:00:40 · 110 阅读 · 0 评论 -
CD 180通过先序和中序数组生成后序数组
题目描述给出一棵二叉树的先序和中序数组,通过这两个数组直接生成正确的后序数组。输入描述:第一行一个整数 n,表示二叉树的大小。第二行 n 个整数 a_i,表示二叉树的先序遍历数组。第三行 n 个整数 b_i,表示二叉树的中序遍历数组。输出描述:输出一行 n 个整数表示二叉树的后序遍历数组。示例1输入复制31 2 32 1 3输出复制2 3 1 #include<iostream> using namespace std; int pre[10007],i原创 2021-04-05 20:56:30 · 165 阅读 · 0 评论 -
2021-04-02
题目描述请把一张纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。给定一个输入参数N,代表纸条都从下边向上方连续对折N次,请从上到下打印所有折痕的方向。[要求]时间复杂度为O(2^n)O(2n),额外空间复杂度为O(1)O(1)输入描述:第一行一个整数N。表示对折次数输出描述:输出若干行,若该折痕向下,输出"down原创 2021-04-02 21:31:54 · 47 阅读 · 0 评论 -
CD 135 回文最少分割数
题目描述给定一个字符串,返回把str全部切割成回文串的最少切割数。输入描述:输出包含一行字符串,代表str(1 \leq length_{str} \leq 5000)(1≤lengthstr ≤5000)。输出描述:输出一个整数,代表把str全部切割成回文串的最小切割数。示例1输入复制ABA输出复制0说明本身是回文串,不需要切割,直接输出0示例2输入复制ABCBAEEE输出复制1说明切割1次,变为“ABCBA”和“EEE”时间复杂度O(nn)空间 O原创 2021-04-02 21:11:59 · 110 阅读 · 0 评论 -
CD 61 能否拼成完美矩形
两个标准:小面积相加==大面积 ;除了大矩形4个顶点出现1次之外,其余每个顶点出现偶次。这道题只用判断面积是否相等也能过优化:结构体映射 ,改成字符串映射. //两个标准:小面积相加==大面积 ;除了大矩形4个顶点出现1次之外,其余每个顶点出现偶次。 #include<iostream> #include<algorithm> #include<map> using namespace std; struct point { int x,y;原创 2021-03-31 11:43:14 · 110 阅读 · 0 评论 -
CD 56 有关阶乘的两个问题
题目描述给定一个非负整数N,返回N!结果的末尾为0的数量输入描述:第一行一个整数N。输出描述:输出一个整数表示N!的末尾0的数量。示例1输入复制3输出复制0说明3! = 6示例2输入复制5输出复制1说明5! = 120示例3输入复制1000000000输出复制249999998#include<iostream>using namespace std;int main(){ long long n; scanf("%lld"原创 2021-03-31 09:13:11 · 93 阅读 · 0 评论 -
CD 80 随时找到数据的中位数
题目描述有一个源源不断的吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构,MedianHolder可以随时取得之前吐出所有数的中位数。[要求]如果MedianHolder已经保存了吐出的N个数,那么将一个新数加入到MedianHolder的过程,其时间复杂度是O(logN)。取得已经吐出的N个数整体的中位数的过程,时间复杂度为O(1)输入描述:第一行一个整数Q,表示有Q次询问。接下来Q行,每行有一个整数opt表示操作类型若opt=1,则接下来原创 2021-03-29 22:46:43 · 98 阅读 · 0 评论 -
CD 34 打印N个数组最大的TOP_K
题目描述有N个长度不一的数组,所有的数组都是有序的,请从大到小打印这N个数组整体最大的前K个数。例如,输入含有N行元素的二维数组可以代表N个一维数组。219, 405, 538, 845, 971148, 55852, 99, 348, 691再输入整数k=5,则打印:Top 5: 971, 845, 691, 558, 538[要求]时间复杂度为O(k \log k)O(klogk),空间复杂度为O(k \log k)O(klogk)输入描述:第一行两个整数T, K。分别表示数组个数原创 2021-03-29 20:45:56 · 142 阅读 · 0 评论 -
CD 66 并查集的实现
题目描述给定一个没有重复值的整形数组arr,初始时认为arr中每一个数各自都是一个单独的集合。请设计一种叫UnionFind的结构,并提供以下两个操作。boolean isSameSet(int a, int b): 查询a和b这两个数是否属于一个集合void union(int a, int b): 把a所在的集合与b所在的集合合并在一起,原本两个集合各自的元素以后都算作同一个集合[要求]如果调用isSameSet和union的总次数逼近或超过O(N),请做到单次调用isSameSet或unio原创 2021-03-20 21:20:01 · 116 阅读 · 0 评论 -
CD 69
题目描述给定一个正数数组arr,其中所有的值都为整数,以下是最小不可组成和的概念把arr每个子集内的所有元素加起来会出现很多值,其中最小的记为min,最大的记为max在区间[min, max]上,如果有数不可以被arr某一个子集相加得到,那么其中最小的那个数是arr的最小不可组成和在区间[min, max]上,如果所有的数都可以被arr的某一个子集相加得到,那么max+1是arr的最小不可组成和请写函数返回正数数组arr的最小不可组成和保证1一定出现过!时间复杂度为O(n)O(n),额外空间复原创 2021-03-20 21:18:54 · 144 阅读 · 0 评论 -
CD 70 累加出整个范围所有的数最少还需要几个数
题目描述给定一个正数数组\ arr arr 和一个正数\ range range,可以选择\ arr arr 中的任意个数字加起来的和为\ sum sum。返回最小需要往\ arr arr 中添加几个数,使得\ sum sum 可以取到1 \sim range1∼range范围上的每一个数。给出的数组不保证有序!输入描述:第一行一个整数N, K。表示数组长度以及range接下来一行N个整数表示数组内的元素输出描述:输出一个整数表示答案示例1输入复制4 151 2 3 7输出复制原创 2021-03-20 20:14:01 · 81 阅读 · 0 评论 -
CD 79 一种消息接收并打印的结构设计
题目描述已知一个消息流会不断地吐出整数1 \sim N1∼N,但不一定按照顺序吐出。如果上次打印的数为i,那么当i+1出现时,请打印i+1及其之后接收过的并且连续的所有数,直到1 \sim N1∼N全部接收并打印完,请设计这种接收并打印的结构[要求]消息流最终会吐出全部的1 \sim N1∼N,当然最终也会打印完所有的1\sim N1∼N,要求接收和打印1 \sim N1∼N的整个过程,时间复杂度为O(N)O(N)。输入描述:第一行一个整数N。接下来一行有N个整数。保证输入是一个1到N的排列输原创 2021-03-20 19:27:09 · 482 阅读 · 0 评论 -
CD 114 两个链表生成相加链表
题目描述假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。输入描述:第一行两个整数 n 和 m,分别表示两个链表的长度。第二行 n 个整数 ai 表示第一个链表的节点。第三行 m 个整数 bi 表示第二个链表的节点。输出描述:输出一行整数表示结果链表。示例1输入原创 2021-03-18 10:15:46 · 63 阅读 · 0 评论 -
CD 119 将单链表的每个K个节点之间逆序
题目描述给定一个单链表,实现一个调整单链表的函数,使得每 K 个节点之间的值逆序,如果最后不够 K 个节点一组,则不调整最后几个节点。输入描述:第一行一个整数 n,n 表示单链表的节点数量。第二行 n 个整数 val 表示链表的各个节点的值。第三行一个整数 K。输出描述:在给定的函数内返回链表的头指针。示例1输入复制51 2 3 4 53输出复制3 2 1 4 5备注:1 \le K \le n \le 10000001≤K≤n≤1000000-1000000 \le原创 2021-03-17 10:56:10 · 206 阅读 · 0 评论 -
CD 93数组中最长的连续子序列
题目描述给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)输入描述:输出两行,第一行包括一个整数n( 1 \leq n \leq10^5 )(1≤n≤105),第二行包含n个整数,分别代表arr[i](1 \leq arr[i] \leq 10^8 )(1≤arr[i]≤108)输出描述:输出一个整数,代表最长连续子序列的长度。示例1输入复制6100 4 200 1 3 2输出复制4示例2输入复制3原创 2021-03-17 10:53:07 · 60 阅读 · 0 评论 -
CD 32 数组中子数组的最大累乘积
题目描述给定一个double类型的数组arr,其中的元素可正、可负、可0,返回子数组累乘的最大乘积。例如,arr=[-2.5, 4, 0, 3, 0.5, 8, -1],子数组[3, 0.5, 8]累乘可以获得最大的乘积12,所以返回12[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)输入描述:第一行一个整数N。表示数组长度。接下来一行N个浮点数表示数组内的数输出描述:输出一个浮点数表示答案,保留到小数点后两位示例1输入复制7-2.5 4 0 3 0.5 8 -1原创 2021-03-16 11:24:22 · 72 阅读 · 0 评论 -
CD 4 不重复排序数组中.......
题目描述给定排序数组arr和整数k,不重复打印arr中所有相加和为k的严格升序的三元组例如, arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9], k = 10,打印结果为:-4 5 9-3 4 9-3 5 80 1 90 2 81 4 5[要求]时间复杂度为O(n^2)O(n2),空间复杂度为O(1)O(1)输入描述:第一行有两个整数n, k接下来一行有n个整数表示数组内的元素输出描述:输出若干行,每行三个整数表示答案按三元组从小到大的顺序输原创 2021-03-16 10:59:07 · 87 阅读 · 0 评论 -
CD 2 最长的可整合子数组的长度
题目描述先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数的差的绝对值都为1,或者该数组长度为1,则该数组为可整合数组。例如,[5, 3, 4, 6, 2]排序后为[2, 3, 4, 5, 6],符合每相邻两个数差的绝对值都为1,所以这个数组为可整合数组给定一个数组arr, 请返回其中最大可整合子数组的长度。例如,[5, 5, 3, 2, 6, 4, 3]的最大可整合子数组为[5, 3, 2, 6, 4],所以请返回5[要求]时间复杂度为O(n^2)O(n2),空间复杂度为O(n)O(原创 2021-03-16 10:08:53 · 55 阅读 · 0 评论 -
CD 170 判断t1树是否包含t2树全部的拓扑结构
题目描述给定彼此独立的两棵二叉树,判断 t1 树是否包含 t2 树全部的拓扑结构。设 t1 树的边集为 E1,t2 树的边集为 E2,若 E2 是 E1 的子集,则表示 t1 树包含 t2 树全部的拓扑结构。输入描述:第一行输入两个整数 n 和 root,n 表示二叉树 t1 的总节点个数,root 表示二叉树 t1 的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)第 n+2原创 2021-03-13 10:35:33 · 110 阅读 · 0 评论 -
CD 137 删除无序列表中值重复出现的节点
题目描述给定一个无序链表,删除其中值重复出现的节点(保留当中顺序遍历第一个出现的节点)。输入描述:第一行一个整数 n,表示单链表的节点数量。第二行 n 个整数表示单链表的节点的值。输出描述:顺序输出单链表每个节点的值。示例1输入复制51 3 2 3 1输出复制1 3 2备注:1 \leq n \leq 10000001≤n≤1000000-1000000 \leq val \leq 1000000−1000000≤val≤1000000**思路:**这里使用unorder原创 2021-03-12 21:34:34 · 72 阅读 · 0 评论 -
CD 163 二叉树的序列化
题目描述二叉树被记录为文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化,给定一颗二叉树,请将该二叉树先序序列化和层序序列化。假设序列化的结果字符串为 str,初始时 str = “”,遍历二叉树时,遇到 null 节点,则在 str 的末尾加上 “#!”,否则加上"当前的节点值!"。输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch原创 2021-03-12 21:11:22 · 91 阅读 · 0 评论 -
CD 35不包含本位置值的累乘数组
题目描述给定一个数组arr,返回不包含本位置值的累乘数组例如,arr=[2,3,1,4],返回[12, 8, 24, 6],即除自己外,其他位置上的累乘[要求]时间复杂度为O(n)O(n),额外空间复杂度为O(1)O(1)输入描述:第一行有两个整数N, P。分别表示序列长度,模数(即输出的每个数需要对此取模)接下来一行N个整数表示数组内的数输出描述:输出N个整数表示答案示例1输入复制4 1000000072 3 1 4输出复制12 8 24 6 #include<i原创 2021-03-10 19:32:37 · 59 阅读 · 0 评论 -
CD 121删除多余字符串得到的字典序最小的字符串
题目描述给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。输入描述:输入包含一行字符串,代表str(1 \leq length_{str} \leq 10^5 )(1≤lengthstr ≤105)。输出描述:输出一行,代表删除后的字符串。示例1输入复制acbc输出复制abc示例2输入复制dbcacbca输出复制dabc备注:时间复杂度O(n)O(n),额外空间复杂度O(1)O(1)。 #inclu原创 2021-03-04 22:02:58 · 242 阅读 · 1 评论 -
CD 131 找到字符串的最长无重复字串
题目描述给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有字母都不相同)。输入描述:输入包含两行,第一行包含一个整数n(1 \leq n \leq 10^5)(1≤n≤105),代表数组arr的长度,第二行包含n个整数,代表数组arr( 1 \leq arr[i] \leq 10^6 )(1≤arr[i]≤106)。输出描述:输出一个整数,代表arr的最长无重复字符的长度。示例1输入复制42 3 4 5输出复制4示例2输入复制52 2 3 4原创 2021-03-04 20:53:24 · 133 阅读 · 2 评论 -
CD 31 最长公共子序列
题目描述给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。输入描述:输出包括两行,第一行代表字符串str1,第二行代表str2。\left( 1\leq length(str1),length(str2) \leq 5000\right)(1≤length(str1),length(str2)≤5000)输出描述:输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。示例1输入复制1A2C3D4B56B1D23CA45原创 2021-02-21 17:34:39 · 93 阅读 · 0 评论 -
CD 27 子矩阵的最大累加和问题
题目描述给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和例如,矩阵matrix为:-90 48 7864 -40 64-81 - 7 66其中,最大的累加和的子矩阵为:48 78-40 64-7 66所以返回累加和209。例如,matrix为:-1 -1 -1-1 2 2-1 -1 -1其中,最大累加和的子矩阵为:2 2所以返回4[要求]时间复杂度为O(n^2m)O(n2m),空间复杂度为O(nm)O(nm)输入描述:第一行有两个整数N原创 2021-02-21 16:07:22 · 119 阅读 · 0 评论 -
CD 26 子数组的最大累加和问题
题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)输入描述:第一行一个整数N。表示数组长度接下来一行N个整数表示数组内的元素输出描述:输出一个整数表示答案示例1输入71 -2 3 5 -2 6 -1输出12书上的解法:#include<iostream>原创 2021-02-21 11:40:07 · 86 阅读 · 0 评论 -
CD 20 打气球的最大分数
题目描述给定一个数组arr,长度为n。代表排有分数的气球。 每打爆一个气球都能获得分数,假设打爆气球的分数为X,获得分数的规则如下:1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为L:如果被打爆气球的右边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为R.获得分数为LXR2)如果被打爆的气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为L:如果被打爆气球的右边所有气球都已经被打爆,获得分数为LX。3)如果被打爆气球的左边所有的气球都已经被打爆:原创 2021-02-17 15:31:34 · 140 阅读 · 0 评论 -
CD 17 机器人到达指定位置方案数
题目描述假设有排成一行的N个位置,记为1~N,开始时机器人在M位置,机器人可以往左或者往右走,如果机器人在1位置,那么下一步机器人只能走到2位置,如果机器人在N位置,那么下一步机器人只能走到N-1位置。规定机器人只能走k步,最终能来到P位置的方法有多少种。由于方案数可能比较大,所以答案需要对1e9+7取模。输入描述:输出包括一行四个正整数N(2<=N<=5000)、M(1<=M<=N)、K(1<=K<=5000)、P(1<=P<=N)。输出描述:输出原创 2021-02-05 22:50:05 · 142 阅读 · 0 评论 -
CD 12 换钱的最少货币数
题目描述给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。输入描述:输入包括两行,第一行两个整数n(0<=n<=1000)代表数组长度和aim(0<=aim<=5000),第二行n个不重复的正整数,代表arr\left( 1 \leq arr_i \leq 10^9 \right)(1≤arri ≤109)。输出描述:输出一个整数,表示组成aim原创 2021-02-05 20:47:39 · 60 阅读 · 0 评论