算法
文章平均质量分 63
日常训练
Hanzoe_lwh
我走的很慢,但绝不回头。
展开
-
LeetCode刷题(每日一题) --179. 最大数
题目给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2] 输出:“210”示例 2:输入:nums = [3,30,34,5,9] 输出:“9534330”示例 3:输入:nums = [1] 输出:“1” 示例 4:输入:nums = [10] 输出:“10”提示:1 <= nums.length <= 1000 &l原创 2021-04-17 15:03:22 · 287 阅读 · 1 评论 -
LeetCode刷题(每日一题) --778. 水位上升的泳池中游泳(并查集)
题目在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。假定你可以瞬间移动无限距离,也就是默认在方格内部游动是不耗时的。当然,在你游泳的时候你必须待在坐标方格里面。你从坐标方格的左上平台 (0,0) 出发。最少耗时多久你才能到达坐标方格的右下平台 (N-1, N-1)?示原创 2021-03-10 22:44:15 · 380 阅读 · 2 评论 -
LeetCode刷题(每日一题) --115. 不同的子序列(动态规划)
题目给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:s = “rabbbit”, t = “rabbit”输出:3示例 2:输入:s = “babgbag”, t = “bag”输出:5解释: 如下图所示, 有 5原创 2021-03-17 16:59:20 · 219 阅读 · 1 评论 -
LeetCode刷题(每日一题) --132. 分割回文串 II(双动态规划)
题目给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。示例 1:输入:s = “aab”输出:1解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。示例 2:输入:s = “a”输出:0示例 3:输入:s = “ab”输出:1提示:1 <= s.length <= 2000 s 仅由小写英文字母组成解答思路按照昨天的思路,首先用第一个动态规划,将整个组合变成二维数组,并且标原创 2021-03-08 10:16:06 · 346 阅读 · 1 评论 -
LeetCode刷题(每日一题) --131. 分割回文串(回溯+动态规划)
题目给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出: [ [“aa”,“b”], [“a”,“a”,“b”] ]解答思路回溯如果要找出所有的回文串,那么可以从当前的位置依次进行切分判断,之后将满足的进行归纳。但是毫无疑问,这种暴力法不提倡。对以上进行改进,如果当前的字串已经不是回文,那么在其之后的划分已经没必要,所以可以进行建筑。对每一种路径,保存当前的划分结果,当达到停止条件时,进行最后的返回原创 2021-03-07 12:07:37 · 263 阅读 · 0 评论 -
LeetCode刷题(每日一题) --1631. 最小体力消耗路径(并查集)
题目你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号)。你每次可以往 上,下,左,右 四个方向之一移动,你想要找到耗费 体力 最小的一条路径。一条路径耗费的 体力值 是路径上相邻格子之间 高度差绝对值 的 最大值 决定的。请你返回从左上角走到右原创 2021-03-05 21:45:18 · 359 阅读 · 1 评论 -
LeetCode刷题(每日一题) --354. 俄罗斯套娃信封问题(动态规划)
给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]] 输出:3 解释:最多信封的个数为 3,组合为:[2,3]原创 2021-03-04 19:32:57 · 475 阅读 · 2 评论 -
LeetCode刷题(每日一题) --338. 比特位计数(动态规划)
题目给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2 输出: [0,1,1] 示例 2:输入: 5 输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的 __bui原创 2021-03-03 12:06:39 · 217 阅读 · 0 评论 -
LeetCode刷题(每日一题) --1579. 保证图可完全遍历(并查集)
题目Alice 和 Bob 共有一个无向图,其中包含 n 个节点和 3 种类型的边:类型 1:只能由 Alice 遍历。类型 2:只能由 Bob 遍历。类型 3:Alice 和 Bob 都可以遍历。给你一个数组 edges ,其中 edges[i] = [typei, ui, vi] 表示节点 ui 和 vi 之间存在类型为 typei 的双向边。请你在保证图仍能够被 Alice和 Bob 完全遍历的前提下,找出可以删除的最大边数。如果从任何节点开始,Alice 和 Bob 都可以到达所有其他节原创 2021-03-02 19:55:30 · 200 阅读 · 1 评论 -
LeetCode刷题(每日一题) --303. 二维区域和检索 - 矩阵不可变(动态规划)
题目给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]]sumRegio原创 2021-03-02 09:01:56 · 116 阅读 · 0 评论 -
LeetCode刷题(每日一题) --303. 区域和检索 - 数组不可变(动态规划)
题目给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))示例:输入: [“NumArray”, “sumRa原创 2021-03-01 08:52:27 · 142 阅读 · 2 评论 -
LeetCode刷题(每日一题) --567. 字符串的排列(滑动窗口)
题目给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例2:输入: s1= “ab” s2 = “eidboaoo”输出: False注意:输入的字符串只包含小写字母 两个字符串的长度都在 [1, 10,000] 之间解答分析首先问题是解决s1的排列原创 2021-02-10 14:59:28 · 157 阅读 · 0 评论 -
LeetCode刷题(每日一题) --959. 由斜杠划分区域(并查集)
出处作者:yexiso链接:https://leetcode-cn.com/problems/regions-cut-by-slashes/solution/tu-jie-bing-cha-ji-he-bing-ding-dian-by-bb22r/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。题目在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。原创 2021-02-10 14:34:49 · 131 阅读 · 1 评论 -
LeetCode刷题(每日一题) --674. 最长连续递增序列(动态规划)
题目给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。示例 1:输入:nums = [1,3,5,4,7] 输出:3 解释:最长连续递增序列是 [1,3,5], 长度为3原创 2021-01-24 15:04:32 · 172 阅读 · 0 评论 -
LeetCode刷题(每日一题) --1489. 找到最小生成树里的关键边和伪关键边(并查集)
题目给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] = [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。最小生成树 (MST) 是给定图中边的一个子集,它连接了所有节点且没有环,而且这些边的权值和最小。请你找到给定图中最小生成树的所有关键边和伪关键边。如果从图中删去某条边,会导致最小生成树的权值和增加,那么我们就说它是一条关键边。伪关键边则是可能会出现在某些最小生成树中但不会出原创 2021-01-24 14:48:17 · 295 阅读 · 0 评论 -
LeetCode刷题(每日一题) --1319. 连通网络的操作次数(并查集)
题目用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 -1 。示例 1:输原创 2021-01-23 18:17:19 · 216 阅读 · 1 评论 -
LeetCode刷题(每日一题) --1584. 连接所有点的最小费用(并查集)
题目给你一个points 数组,表示 2D 平面上的一些点,其中 points[i] = [xi, yi] 。连接点 [xi, yi] 和点 [xj, yj] 的费用为它们之间的 曼哈顿距离 :|xi - xj| + |yi - yj| ,其中 |val| 表示 val 的绝对值。请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有 一条简单路径时,才认为所有点都已连接。示例 1:输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]] 输出:20 解释原创 2021-01-19 14:53:42 · 315 阅读 · 1 评论 -
再说并查集,对并查集的优化(来自leetcode的大佬分享)
出处:作者:yexiso链接:原文链接来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。P1、什么是并查集引用自百度百科:并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。简单来说,并查集原创 2021-01-19 11:10:56 · 183 阅读 · 0 评论 -
LeetCode刷题(每日一题) --721. 账户合并(并查集)
题目给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式返回账户:每个账户的第一个元素是名称原创 2021-01-18 21:35:40 · 251 阅读 · 1 评论 -
LeetCode刷题(栈) --682. 棒球比赛
题目你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数原创 2021-01-17 12:12:32 · 176 阅读 · 0 评论 -
LeetCode刷题(栈) --844. 比较含退格的字符串
题目给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。解答class Solution {public: bool backspaceCompare(string S, string T) { stack<char> S_stack; stack<char> T_stack; for(int i=0;i&l原创 2021-01-17 11:53:16 · 78 阅读 · 0 评论 -
LeetCode刷题(每日一题) -1232. 缀点成线
题目在一个 XY 坐标系中有一些点,我们用数组 coordinates 来分别记录它们的坐标,其中 coordinates[i] = [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。示例 1:输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]输出:true示例 2:输入:coordinates = [[1,1],[2,2],[3,4]原创 2021-01-17 11:40:25 · 241 阅读 · 0 评论 -
LeetCode刷题(每日一题) --803. 打砖块(并查集)
题目有一个 m x n 的二元网格,其中 1 表示砖块,0 表示空白。砖块 稳定(不会掉落)的前提是:一块砖直接连接到网格的顶部,或者至少有一块相邻(4 个方向之一)砖块 稳定 不会掉落时给你一个数组 hits ,这是需要依次消除砖块的位置。每当消除 hits[i] = (rowi, coli) 位置上的砖块时,对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这一消除操作而掉落。一旦砖块掉落,它会立即从网格中消失(即,它不会落在其他稳定的砖块上)。返回一个数组 result ,其中 resu原创 2021-01-16 13:20:20 · 175 阅读 · 1 评论 -
LeetCode刷题(每日一题) --1018. 可被 5 整除的二进制前缀
题目给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。解答其实这道题目,暴力也挺简单的,这里主要想说一下,有限状态机的解法:状态对应(mod 5),箭头表示状态转移,转移函数是(当前状态*2+二进制数末位)%5。一个数除以5,他的余数只能是0,1,2,3,4五种,所以以原创 2021-01-15 15:17:13 · 173 阅读 · 0 评论 -
LeetCode刷题(每日一题) --947. 移除最多的同行或同列石头(并查集)
题目n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大数量。示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5解释:一种移除 5 块石头的方法如下所示:1. 移除石头 [2,2] ,原创 2021-01-15 15:07:24 · 552 阅读 · 1 评论 -
LeetCode刷题(栈) --735. 行星碰撞
题目给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入: asteroids = [5, 10, -5]输出: [5, 10]解释: 10 和 -5 碰撞后只剩下 10。 5 和原创 2021-01-14 12:26:01 · 187 阅读 · 0 评论 -
LeetCode刷题(栈) --456. 132模式
题目给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。示例1:输入: [1, 2, 3, 4]输出: False解释: 序列中不存在132模式的子序列。示例 2:输入: [3, 1, 4, 2]输出: True解释: 序列中有 1原创 2021-01-13 18:37:07 · 227 阅读 · 1 评论 -
LeetCode刷题(每日一题) --684. 冗余连接
题目在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式 u < v。原创 2021-01-13 16:14:22 · 186 阅读 · 1 评论 -
L1-6 检查密码 --注意点小结
题目本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。输入格式:输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。输出格式:对每个用户的密码,在一行中输出系统反馈信息,分以下5种:如果密码合法,输出Your password is wan mei.;如果密码太短,不论合法与否,都输出Yo原创 2020-11-21 12:21:58 · 436 阅读 · 1 评论 -
python手动实现K_means聚类(指定K值)
前言这几天作业,用到了k_means聚类,作为一名deeper,怎么能不手动实现一下呢?然后,我就错过了作业的提交时间。。。。实现原理简单来说,可以分为以下几步:指定有几个簇每个簇任选一个点作为初值(数据中的点),中心点(几个簇就几个中心点),会有很多种情况通过指定的距离函数,计算数据中每个点与中心点的距离将计算的点加入到与其最近的簇中所有点都进行一遍之后,重新计算中心点(簇中的每个点加起来,求平均值)重复以上步骤,直至簇不会变化将所有的情况进行计算,找出最小的(也可以通过设置阈原创 2020-11-19 21:35:34 · 856 阅读 · 0 评论 -
L1-033 出生年 (15分) (使用set+sstream)
题目以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。输入格式:输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。输出格式:根据输入,输出x和能达到要求的年份。数字间原创 2020-11-15 11:33:45 · 198 阅读 · 0 评论 -
第十届蓝桥杯大赛决赛真题 CA-A
题目试题 A: 三升序列本题总分:5 分【问题描述】对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向右看、或者从上向下看是递增的。例如,如下矩阵中YQPDBKEZAFYV有BKZ、BEZ、AFY、AFV、AKP、DEF 等 6 个三升序列。注意当三个字母是从左下到右上排列时,从左向右看和从上向下看是不同的顺序。对于下面的 30 行 50 列的矩阵,请问总共有多少个三升序列?(如果你把以下文字原创 2020-11-13 21:41:25 · 430 阅读 · 0 评论 -
深度优先搜索树 (通过数组以后序遍历以及中序遍历创建树)
题目通过中序遍历和后序遍历创建树,同时找到到根的路径权和最小的叶子。输入:3 2 1 4 5 7 63 1 2 5 6 7 4输出1解答#include <string>#include <iostream>#include <algorithm>#include <sstream>#include <vector>using namespace std;const int maxv = 10000+10;ve原创 2020-11-13 12:51:10 · 436 阅读 · 0 评论 -
三角形最小路径和 (使用动态规划-自顶向下,自底向上两种解法)
题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。来源:力扣(LeetCode)链接:htt原创 2020-11-12 14:09:05 · 524 阅读 · 0 评论 -
算法题训练--广度优先实现树的遍历 (c++中,vector,queue,struct的使用)
题目简单说:输入**(11,LL) (7,LLL) (8,R) (5,) (4,L) (12,RL) (2,LLR) (1,RRR) (4,RR) (),每个括号对应一个节点,()**代表结束,L代表左孩子,R代表右孩子,每个节点之间存在一个空格分割。输出:5 4 8 11 13 4 7 2 1解答#include <cstdio>#include <iostream>#include <cstring>#include <vector>原创 2020-11-12 13:54:37 · 175 阅读 · 0 评论 -
L1-032 Left-pad (20分) (cin.ignore()的使用)
题目根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用去填充字符串GPLT,使之长度为10,调用left-pad的结果就应该是*****GPLT。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。输入格式:输入在第一原创 2020-11-10 13:06:02 · 82 阅读 · 0 评论 -
L1-031 到底是不是太胖了 (10分) (double类型比较的问题,以及abs的使用)
题目据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。输入格式:输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空原创 2020-11-09 14:03:16 · 538 阅读 · 0 评论 -
L1-030 一帮一 (15分) (使用vector以及pair的解法)
题目“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。输入格式:输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不超过8个英文字母的非空字符串),其间以1个空格分隔。这里保证本班男女比例是1:1,并且没有并列名次。输原创 2020-11-09 12:50:25 · 72 阅读 · 0 评论 -
L1-029 是不是太胖了 (5分) (着重说cout对小数的控制)
题目据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)输入格式:输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。输出格式:在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。输入样例:169输出样例:124.2解答#include <stdio.h>#include <iostream&g原创 2020-11-08 13:34:40 · 80 阅读 · 0 评论 -
L1-028 判断素数 (10分)(附加几种求素数的方法)
题目本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231 的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111输出样例:YesNo解答(使用6的倍数的方法)#include <iostream>#include <math.h>using namespace std;bool is原创 2020-11-08 13:22:39 · 305 阅读 · 0 评论