
算法
♚ Painting
想要爱自己的人以及自己爱的人生活的更好,那么自己就要不断努力。
在你想要放弃的时候,想想是什么让你当初坚持走到了这里。——科比
展开
-
049导弹拦截(排序+枚举)
题目描述:经过 11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0 时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。输入格式:第一行包含 4 个整数x1、y1、x2、.原创 2021-03-10 11:30:00 · 339 阅读 · 0 评论 -
048数列(二进制和映射)
题目描述:“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个4х4的矩阵,您可以改变任何一个位置[i,j]上把手的状态。但是,这也会使得第i行和第j列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。输入格式:输入一共包含四行,每行包含四个把手的初始状态。符号“+”表示把手处于闭合状态,而符号“-”表示把手处于打开状态。至少一个手柄的.原创 2021-02-28 12:08:34 · 585 阅读 · 0 评论 -
047 ISBN号码
题目描述:每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以1加上次位.原创 2021-02-20 15:31:36 · 182 阅读 · 0 评论 -
046费解的开关(递推)
题目描述:你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成:01111.原创 2021-02-18 10:18:58 · 166 阅读 · 0 评论 -
045简单斐波那契(递推)
题目描述:以下数列0 1 1 2 3 5 8 13 21 …被称为斐波纳契数列。 这个数列从第3项开始,每一项都等于前两项之和。输入一个整数N,请你输出这个序列的前N项。输入格式:一个整数N。输出格式:在一行中输出斐波那契数列的前N项,数字之间用空格隔开。数据范围:0<N<46输入样例:5输出样例:0 1 1 2 3import java.util.Scanner;public class Main { static int a = 0, b = 1, c ,.原创 2021-02-17 09:41:19 · 376 阅读 · 1 评论 -
044递归实现组合型枚举(递归)
题目描述:从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式:两个整数 n,m在同一行用空格隔开。输出格式:按照从小到大的顺序输出所有方案,每行1个。 首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 5 7排在1 3 6 8前面)。数据范围:n>0, 0≤m≤n, n+(n−m)≤25输入样例:5 3输出样例:1 2 31 2 41 2 51 3 41 3.原创 2021-02-16 10:22:33 · 205 阅读 · 0 评论 -
043递归实现排列型枚举(递归)
题目描述:把 1~n这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。输入格式:一个整数n。输出格式:按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。数据范围:1≤n≤9输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1思路:一共有n个位置,从第一个位置开始放数,先枚举把哪一个数放到第一个位置上,然后再递归枚举下一个位置。每.原创 2021-02-15 10:10:48 · 305 阅读 · 0 评论 -
042递归实现指数型枚举(递归)
题目描述:从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式:输入一个整数n。输出格式:每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。 对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围:1≤n≤15输入样例:3输出样例:322 311 31 21 2 3思路:从前往后依次枚举每个数,是不是选它。选和不选分别会走到两个分支去。在递归搜索树中,叶结点就是.原创 2021-02-14 11:51:47 · 162 阅读 · 4 评论 -
041献给阿尔吉侬的花束(BFS)
题目描述:阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。 迷宫用一个 R×C的字符矩阵来表示。 字符 S表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。 阿尔吉侬在 1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图.原创 2021-02-13 10:47:50 · 511 阅读 · 4 评论 -
040数独检查(模拟)
题目描述:数独是一种流行的单人游戏。 目标是用数字填充9x9矩阵,使每列,每行和所有9个非重叠的3x3子矩阵包含从1到9的所有数字。每个9x9矩阵在游戏开始时都会有部分数字已经给出,通常有一个独特的解决方案。给定完成的N^2∗N^2数独矩阵,你的任务是确定它是否是有效的解决方案。 有效的解决方案必须满足以下条件:每行包含从1到N^2的每个数字,每个数字一次。每列包含从1到N^2的每个数字,每个数字一次。将N^2∗N^2矩阵划分为N^2个非重叠N∗N子矩阵。 每个子矩阵包含从1到N^2的每个.原创 2021-02-08 09:22:00 · 444 阅读 · 1 评论 -
039开心的金明(0-1背包问题)
题目描述:金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。 他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件.原创 2021-02-07 20:55:41 · 197 阅读 · 0 评论 -
038最大的和(递推)
题目描述:给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。 矩形的总和是该矩形中所有元素的总和。在这个问题中,具有最大和的子矩形被称为最大子矩形。 例如,下列数组:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2 其最大子矩形为:9 2-4 1-1 8 它拥有最大和15。输入格式:输入中将包含一个N*N的整数数组。 第一行只输入一个整数N,表示方形二维数组的大小。从第二行开始,输入由空格和换行符隔开的N^2个整数.原创 2021-02-06 10:37:43 · 152 阅读 · 0 评论 -
037摘花生(线性DP)
题目描述:Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。 HelloKitty只能向东或向南走,不能向西或向北走。 问Hello Kitty最多能够摘到多少颗花生。输入格式:第一行是一个整数T,代表一共有多少组数据。 接下来是T组数据。 每组数据的第一行是两个整数,分别代表花生苗的行数R和列数 C。每组数据的接下.原创 2021-02-04 09:44:55 · 120 阅读 · 0 评论 -
036火星人(全排列)
题目描述:人类终于登上了火星的土地并且见到了神秘的火星人。 人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。火星人用一种非常简单的方式来表示数字——掰手指。 火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3……。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计.原创 2021-02-03 16:49:05 · 177 阅读 · 0 评论 -
035最长上升子序列(DP)
题目描述:给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式:第一行包含整数N。 第二行包含N个整数,表示完整序列。输出格式:输出一个整数,表示最大长度。数据范围:1≤N≤1000,−10^9≤数列中的数≤10^9输入样例:73 1 2 1 8 5 6输出样例:4设计状态:设f(x)为以a[x]结尾的LIS长度,那么LIS = max{f(x)}如何推导f(x),f(x)从哪里来?考虑比x小的每一个p,如果a[x] > a[p],那么f(.原创 2021-02-02 09:57:47 · 160 阅读 · 3 评论 -
034合唱队形(最长上升子序列 DP做法)
题目描述:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<…<Ti>Ti+1>…>TK(1≤i≤K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入格式:输入的第一行是一个整数N,表示同学的总数。 第二行有n个整数,用空格分.原创 2021-02-01 10:11:25 · 115 阅读 · 0 评论 -
016蛇形矩阵
题目描述:输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。输入格式:输入共一行,包含两个整数n和m。输出格式:输出满足要求的矩阵。 矩阵占n行,每行包含m个空格隔开的整数。数据范围:1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5import java.util.Scanner;public class Main{ public static void main(St.原创 2021-01-13 21:44:23 · 175 阅读 · 0 评论 -
033整数集合划分(贪心)
题目描述:给定一个包含 N个正整数的集合,请你将它划分为两个集合 A1 和 A2,其中 A1包含 n1 个元素,A2 包含 n2个元素。集合中可以包含相同元素。用 S1表示集合 A1内所有元素之和,S2 表示集合 A2 内所有元素之和。 请你妥善划分,使得 |n1−n2|尽可能小,并在此基础上 |S1−S2|尽可能大。输入格式:第一行包含整数 N。 第二行包含 N个正整数。输出格式:再一行中输出 |n1−n2|和 |S1−S2|,两数之间空格隔开。数据范围:2≤N≤105,保证集合中各.原创 2021-01-31 09:49:47 · 388 阅读 · 1 评论 -
032滑雪场设计(枚举+贪心)
题目描述:农夫约翰的农场上有 N个山峰,每座山的高度都是整数。 在冬天,约翰经常在这些山上举办滑雪训练营。 不幸的是,从明年开始,国家将实行一个关于滑雪场的新税法。 如果滑雪场的最高峰与最低峰的高度差大于17,国家就要收税。为了避免纳税,约翰决定对这些山峰的高度进行修整。 已知,增加或减少一座山峰 x单位的高度,需要花费 x^2的金钱。约翰只愿意改变整数单位的高度,且每座山峰只能修改一次。请问,约翰最少需要花费多少钱,才能够使得最高峰与最低峰的高度差不大于17。输入格式:第一行包含整数 N。 .原创 2021-01-30 09:52:08 · 130 阅读 · 0 评论 -
031阶乘(数论)
题目描述:N的阶乘(记作 N!)是指从 1到 N(包括 1和 N)的所有整数的乘积。 阶乘运算的结果往往都非常的大。 现在,给定数字 N,请你求出 N!的最右边的非零数字是多少。 例如 5!=1×2×3×4×5=120,所以 5!的最右边的非零数字是 2。输入格式:共一行,包含一个整数 N。输出格式:输出一个整数,表示 N! 的最右边的非零数字。数据范围:1≤N≤1000输入样例:7输出样例:4思路:先将n!的末尾的零都去掉,然后再求末位数字。import java.util.原创 2021-01-29 11:29:10 · 264 阅读 · 0 评论 -
030货币系统(DP 完全背包问题)
题目描述:给定 V种货币(单位:元),每种货币使用的次数不限。 不同种类的货币,面值可能是相同的。 现在,要你用这 V种货币凑出 N 元钱,请问共有多少种不同的凑法。输入格式:第一行包含两个整数 V和 N。 接下来的若干行,将一共输出 V个整数,每个整数表示一种货币的面值。输出格式:输出一个整数,表示所求总方案数。数据范围:1≤V≤25,1≤N≤10000答案保证在long long范围内。输入样例:3 101 2 5输出样例:10...原创 2021-01-28 09:51:09 · 154 阅读 · 2 评论 -
029棋盘挑战(经典暴搜问题—八皇后问题)
题目描述: 给定一个 N×N的棋盘,请你在上面放置 N个棋子,要求满足:每行每列都恰好有一个棋子每条对角线上都最多只能有一个棋子 上图给出了当 N=6 时的一种解决方案,该方案可用序列 2 4 6 1 3 5来描述,该序列按顺序给出了从第一行到第六行,每一行摆放的棋子所在的列的位置。 请你编写一个程序,给定一个 N×N的棋盘以及N个棋子,请你找出所有满足上述条件的棋子放置方案。输入格式:共一行,一个整数 N。输出格式:共四行,前三行每行输出一个整数序列,用来描述一种可行放置方案,.原创 2021-01-27 16:28:10 · 497 阅读 · 0 评论 -
028骰子的点数(DP)
题目描述:将一个骰子投掷n次,获得的总点数为s,s的可能范围为n~6n。 掷出某一点数,可能有多种掷法,例如投掷2次,掷出3点,共有[1,2],[2,1]两种掷法。 请求出投掷n次,掷出n~6n点分别有多少种掷法。样例1:输入:n=1输出:[1, 1, 1, 1, 1, 1]解释:投掷1次,可能出现的点数为1-6,共计6种。每种点数都只有1种掷法。所以输出[1, 1, 1, 1, 1, 1]。样例2:输入:n=2输出:[1, 2, 3, 4, 5, 6, 5, 4, 3, 2, .原创 2021-01-26 20:42:08 · 203 阅读 · 0 评论 -
027平方矩阵||(找规律)
题目描述:输入整数N,输出一个N阶的二维数组。 数组的形式参照样例。输入格式:输入包含多行,每行包含一个整数N。 当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式:对于每个输入整数N,输出一个满足要求的N阶二维数组。 每个数组占N行,每行包含N个用空格隔开的整数。 每个数组输出完毕后,输出一个空行。数据范围:0≤N≤100方法一:向右向下延伸import java.util.Scanner;public class Main{ static int N = 1.原创 2021-01-25 09:36:37 · 412 阅读 · 3 评论 -
026十三号星期五(枚举+打表)
题目描述:十三号星期五真的很不常见吗? 每个月的十三号是星期五的频率是否比一周中的其他几天低? 请编写一个程序,计算 N年内每个月的 13 号是星期日,星期一,星期二,星期三,星期四,星期五和星期六的频率。 测试的时间段将会开始于 1900年 1月 1日,结束于1900+N−1年12 月 31日。一些有助于你解题的额外信息:1.19001900 年 11 月 11 日是星期一。2.在一年中,44 月、66 月、99 月、1111 月每个月 3030 天,22 月平年 2828 天,闰年 29.原创 2021-01-24 09:16:18 · 171 阅读 · 0 评论 -
025找硬币(双指针)
题目描述:伊娃喜欢从整个宇宙中收集硬币。 有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。 但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。输入格式:第一行包含两个整数 N 和 M,分别表示硬币数量以及需要支付的金额。 第二行包含 N个整数,表示每个硬币的面额。输出格式:输出一行,包含两个整数 V1,V2,表示所选的两个硬币的面额,使得 V1≤V2 并且 V1.原创 2021-01-23 09:55:27 · 122 阅读 · 0 评论 -
024翻硬币(递归)
题目描述:小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。 比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相邻的两个硬币叫做一步操作。输入格式:两行等长的字符串,分别表示初始状态和要达到的目标状态。输出格式:一个整数,表示最.原创 2021-01-22 09:40:33 · 166 阅读 · 0 评论 -
023货仓选址(绝对值不等式)
题目描述:在一条数轴上有 NN 家商店,它们的坐标分别为 A1~AN。 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式:第一行输入整数N。 第二行N个整数A1~AN。输出格式:输出一个整数,表示距离之和的最小值。数据范围:1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12...原创 2021-01-21 09:28:25 · 282 阅读 · 8 评论 -
022奖学金
题目描述:某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在.原创 2021-01-20 08:56:30 · 162 阅读 · 0 评论 -
021校门外的树
题目描述:某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。 我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。 这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。 现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。输入格式:输入文件的第一行有.原创 2021-01-19 09:54:50 · 199 阅读 · 0 评论 -
020分巧克力
题目描述:儿童节那天有 K 位小朋友到小明家做客。 小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。 为了公平起见,小明需要从这 N块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:1.形状是正方形,边长是整数2.大小相同 例如一块 6×5 的巧克力可以切出 6块 2×2 的巧克力或者 2块 3×3的巧克力。 当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入格式:第一行包含两个整数 N.原创 2021-01-18 09:23:48 · 368 阅读 · 0 评论 -
019剪绳子
题目描述:有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。输入格式:第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。 第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。输出格式:输出一个数字,表示裁剪后最长的长度,保留两位小数。数据范围:输入样例:3 43 5 4输出样例:2.50样例解释:第一根和第三根分别裁剪出一根2.50长度的绳子,第二根剪成2根.原创 2021-01-17 10:11:46 · 208 阅读 · 0 评论 -
018回文平方
题目描述:回文数是指数字从前往后读和从后往前读都相同的数字。 例如数字 12321 就是典型的回文数字。 现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。输入格式:一个整数 B。输出格式:每行包含两个在 B进制下表示的数字。 第一个表示满足平方值转化为 B进制后是回文数字那个数,第二个数表示第一个数的平方。 所有满足条件的数字按从小到大顺序依次输出。数据范围:2≤B≤20,对于大于 9 的数字,用 A表示 10,.原创 2021-01-16 14:38:05 · 111 阅读 · 0 评论 -
017红与黑
题目描述:有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。 你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入格式:输入包括多个数据集合。 每个数据集合的第一行是两个整数 W和 H,分别表示 x 方向和 y 方向瓷砖的数量。 在接下来的 H 行中,每行包括 W个字符。每个字符表示一块瓷砖的颜色,规则如下:1)‘.’:黑色的瓷砖; 2)‘#’:红色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符.原创 2021-01-15 09:50:53 · 195 阅读 · 0 评论 -
015数字三角形
题目描述:给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。输入格式:第一行包含整数n,表示数字三角形的层数。 接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。输出格式:输出一个整数,表示最大的路径数字和。数据范围:1≤n≤500,−10000≤三角形中的整数≤10000输入样例:573 88 1 02 7 4 44 5 2 6 5.原创 2021-01-11 11:16:44 · 117 阅读 · 0 评论 -
014连续子数组的最大和
题目描述:输入一个 非空 整型数组,数组里的数可能为正,也可能为负。 数组中一个或连续的多个整数组成一个子数组。 求所有子数组的和的最大值。 要求时间复杂度为O(n)。样例:输入:[1, -2, 3, 10, -4, 7, 2, -5]输出:18动态规划问题:class Solution { public int maxSubArray(int[] nums) { int sum = nums[0],max = nums[0]; for(int i .原创 2021-01-09 19:26:09 · 73 阅读 · 0 评论 -
013机器人的运动范围
题目描述:地上有一个 m行和 n列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1。 一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 k 的格子。请问该机器人能够达到多少个格子?样例1:输入:k=7, m=4, n=5输出:20样例2:输入:k=18, m=40, n=40输出:1484解释:当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。 但是,它不能进入方格(35,.原创 2021-01-09 11:30:12 · 206 阅读 · 0 评论 -
012替换空格
题目描述:请实现一个函数,把字符串中的每个空格替换成"%20"。 你可以假定输入字符串的长度最大是1000。 注意输出字符串的长度可能大于1000。样例:输入:“We are happy.”输出:“We%20are%20happy.”class Solution { public String replaceSpaces(StringBuffer str) { for(int i = 0;i<str.length();i++){ if(st.原创 2021-01-08 20:59:29 · 93 阅读 · 0 评论 -
011找出数组中重复的数字
题目描述:给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。 注意:如果某些数字不在0∼n−1 的范围内,或数组中不包含重复数字,则返回 -1;样例:给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。class Solution { public int duplicateInArray(int[] .原创 2021-01-08 10:34:17 · 110 阅读 · 0 评论 -
010背包问题求具体方案
题目描述:有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出字典序最小的方案。这里的字典序是指:所选物品的编号所构成的序列。物品的编号范围是 1…N。输入格式:第一行两个整数,N,V用空格隔开,分别表示物品数量和背包容积。 接下来有 N 行,每行两个整数 vi,wi用空格隔开,分别表示第i件物品的体积和价值。输出格式:输出一行,包含若干个用空格隔开的整数,.原创 2020-12-30 16:34:54 · 94 阅读 · 0 评论