![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序设计方法与实践
文章平均质量分 50
饮猫 DrinkCat
Give people wonderful tools, and they'll do wonderful things.
展开
-
【字符串处理、枚举T10】肥宅快乐串
我们可以从原字符串的每一个字符开始,统计接下来 10 个数字与 "fattyhappy" 的不同字符数,并根据不同的字符数进行对应的操作。本题的主要思路是以 "fattyhappy" 为模板,对字符串进行模板匹配。如果交换后与模板字符串相同,则可以将这两个位置作为答案进行输出。如果交换后与模板字符串相同,则可以将这两个位置作为答案进行输出。该情况下我们需要将这个不同的字符与所有其他字符尝试进行交换。该情况下无论如何交换都至少会有一个字符与模板字符串不同。该情况下我们尝试交换不同的两个字符。原创 2023-08-25 10:50:52 · 203 阅读 · 1 评论 -
【字符串处理、枚举T09】【DFS 深度优先搜索】解谜游戏
(id = m),进行一次运算,统计出总的按键次数。接着,我们回溯到上一层,进行另一个抉择。进行枚举,16位,每一位分别表示一个灯的亮灭情况,每次情况计算完成后加一即可。但是不是所有题目都能有这种简单的情形。注意到本题中只有【按键】和【不按键】两种情况,故我们可以使用。,这显然不满足题目要求,因此我们需要对算法进行优化。,直到遍历完所有情况。算法的过程可以参考下图示意。,此处我想讲解一种新的枚举方法:使用。本题是一道典型的枚举题,但如果我们。,最后判断所有灯是否全部熄灭即可。经过观察,我们不难发现:当。原创 2023-08-25 10:44:10 · 101 阅读 · 1 评论 -
【字符串处理、枚举T08】【Vector方法】发言统计
vector是【C++】中一个多功能的,能够操作多种数据结构和算法的模板类和函数库。我们可以将它理解为一个能够存放任意类型的动态数组,能够增加和压缩数据。原创 2023-08-25 10:34:38 · 96 阅读 · 1 评论 -
【感受算法魅力T05】【可视化简单易懂】北湖深坑
我们可以声明两个数组,分别用于记录某一点(含该点)左侧以及右侧的最高点高度,这一部分可以通过简单的遍历实现。更进一步,其实我们不需要知道左侧以及右侧最高点的高度,我们也可以只开辟一个数组,用于。要确定某一点是“制高点”还是“积水点”或其他点,我们需要知道该点两侧的高度信息。由此可见,我们只需要从左至右将所有点的积水高度相加即可。即可,因为超过“第二高”点的所有位置都不会有积水。对于本题,某一横坐标处存在积水的条件是。将上述数据累加求和,即可得出蓄水体积。,且该坐标处的积水高度等于。原创 2023-08-24 09:48:14 · 95 阅读 · 1 评论 -
【感受算法魅力T04】【可视化简单易懂】北湖挖坑
这是一个正确的思路,但是如果我们根据不同高度层来遍历,在庞大的数据体量下必然会有TLE的风险,因此我们需要对这个算法进行优化。,因为在左侧区域中,我们已经对相应高度层进行过挖掘,只需“左侧多挖一格”即可;这样处理后,我们只需要对宽度进行一次遍历即可,复杂度为o(n)。2. 注意数据范围,部分变量需要使用long long声明。本题中,我们需要让挖坑的次数最少,因此我们需要。,因为左侧没有对靠下的高度层进行挖掘。1. 注意边界的处理;原创 2023-08-24 09:47:35 · 66 阅读 · 1 评论 -
【感受算法魅力T03】达拉崩吧的酒宴
我们可以将每一位上小白鼠的存亡用01来表示。最终得到的数便是有毒酒桶对应的二进制编号。两种情况,这与二进制中的01相似。在本道题目中,我们同样可以用二进制来表示酒桶。本题的数据量较大,部分变量需要使用long long形式。对于一只小白鼠,喝完酒后只会有。换而言之,我们只需要知道酒桶。,即可得出所需小鼠的数量。原创 2023-08-24 09:46:46 · 67 阅读 · 1 评论 -
【感受算法魅力T02】摘桃子
这个思路其实很容易看懂。我们要让摘得的桃子数量最大化,必然要尽可能不让桃子过期。今日的桃子不摘明天还能摘,但是昨天的桃子不摘明天就摘不了了。关注桃子在哪棵树上,只需要关注每天产出的桃子的总数,因此我们在读入时只需要统计出每天产生桃子的数量即可。本题需要我们计算出能摘取到的桃子的最大值。原创 2023-08-24 09:46:00 · 70 阅读 · 1 评论 -
【感受算法魅力T01】猜数字看人品
对于以上两个条件,我们可以简化为判断 leftBoundary < targetPoint < rightBoundary 是否成立。本题需要我们判断Tom的回答是否合理。2. 当Tom回答"too high"时,更新右侧边界;1. 当Tom回答"too low"时,更新左侧边界;3. 当Tom回答"right on"时,更新目标点。1. 左侧边界是否大于右侧边界,或与右侧边界重合;2. 检查左右边界初始化的条件。1. 检查数据的读入是否正确;2. 目标点是否在线段上。原创 2023-08-24 09:44:49 · 76 阅读 · 1 评论