随笔分类 -  基础算法

摘要:斐波那契数列 分析:斐波那契数列是后一个数等于前两个数之和,所以开一个变量存每个算出的数所在的位置,然后输出指定的第a个数的值。在这里开一个maxx,得出最大的a是谁,就把斐波那契数算到最大的a。 (搜索算法) 代码: #include<iostream> #include<cstdio> usin 阅读全文
posted @ 2022-09-18 19:17 4lovls 阅读(88) 评论(0) 推荐(0) 编辑
摘要:桶排序: 桶排序是计数排序的升级版,也是分治算法。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。简言之 阅读全文
posted @ 2022-09-11 17:19 4lovls 阅读(25) 评论(0) 推荐(0) 编辑
摘要:P1577 切绳子 分析:根据题意,与木材加工的题意一样,唯一的不同是这个要精确到小数点后两位,利用双精度浮点数的二分查找。在此我们可以先将输入的双精度浮点数扩大一百倍转化成整数来计算,在最后输出的时候再除以100.0转化为浮点数输出。 #include<iostream>#include<cstd 阅读全文
posted @ 2022-08-22 20:40 4lovls 阅读(52) 评论(0) 推荐(0) 编辑
摘要:P2440 木材加工 分析:根据题意,先对所有的木材长度进行排序方便二分查找,写一个查找函数,每个木材都除以当前的切割长度(mid),看能切出几段,如果切出的段数大于要求的段数,证明查找失败,在主程序内的mid(也就是当前的切割长度)就要将范围缩小一半,如果得出的段数少于给定段数,范围就反向缩小一半 阅读全文
posted @ 2022-08-22 17:19 4lovls 阅读(105) 评论(0) 推荐(0) 编辑
摘要:[2015年NOIP提高组] 跳石头 分析:根据题意,通过二分查找确定答案,左右各设变量方便查找中间值,遍历所有石头与当前的指定最短跳跃距离进行比较,如果两石头间的距离小了就要移走当前的石头,距离大了就不需要移走石头,继续往下判断,以此类推,如果最后要移走的石头数目不符合题意,则进行下一次二分,直到 阅读全文
posted @ 2022-08-22 10:19 4lovls 阅读(39) 评论(0) 推荐(0) 编辑
摘要:[2004年NOIP提高组] 合并果子 分析:根据题意,最先合并的果子加的次数最多,所以在每次合并时都要选取最小的两个进行,这就用到了排序算法,一开始给所有的果子从小到大排序,这里使用了快速排序,然后在每一次合并完最小的两个后,将合并完的数与剩余的数进行比较,在这里用1次冒泡,效率是最高的,在每次合 阅读全文
posted @ 2022-08-17 10:33 4lovls 阅读(69) 评论(0) 推荐(0) 编辑
摘要:[2010年NOIP普及组] 接水问题 分析:根据题意,要输出所用时间最长的那个人(包括那个人在等待的时间),分为两种情况,第一种是水龙头多于要打水的人数,这种情况下就可以直接写一个比较函数输出最大的人打水所用的时间,另一种是水龙头少于要打水的人,这种情况就要写一个函数比较哪个打水的人用的时间最少, 阅读全文
posted @ 2022-08-16 19:08 4lovls 阅读(170) 评论(0) 推荐(0) 编辑
摘要:[2007年NOIP普及组] 纪念品分组 分析:根据题意,需要给纪念品分组,有几个限定条件,每组纪念品不能大于两个,纪念品价格相加之和不能超过上限,所以,先给纪念品的价格排个序,设两个变量,分别指向最左边的纪念品和最右边的纪念品,最左边和最右边相加,如果价格超过上限,就将指向最右边的变量往前移,同时 阅读全文
posted @ 2022-08-16 11:02 4lovls 阅读(42) 评论(0) 推荐(0) 编辑
摘要:[2002年NOIP提高组] 均分纸牌 分析:根据题意,先求所有数字的平均数,然后遍历数字与平均数比较,如果大于平均数,那么后一堆纸牌加上前一堆纸牌多出来的,同时步数+1,反之如果小于平均数,就用后一堆纸牌减去前一堆纸牌少的部分,步数+1,最后输出步数。 #include<iostream>#inc 阅读全文
posted @ 2022-08-16 10:10 4lovls 阅读(22) 评论(0) 推荐(0) 编辑
摘要:[2007年NOIP普及组] Hanoi双塔问题 分析:根据题意,这是一个运用递推解决的问题,最关键的是找到递推式,先看汉诺单塔我们会发现规律为2^n-1,那么汉诺双塔就是在此基础上乘2,也就是2^(n+1)-2,找到规律后,还有一个需要我们注意的点是这道题范围,通过n=200我们可知要用高精度来计 阅读全文
posted @ 2022-08-15 17:31 4lovls 阅读(247) 评论(0) 推荐(0) 编辑
摘要:[2013年NOIP提高组] 积木大赛 分析:根据题意,挨个输入每次的高度,在每个输入时就与上一个的高度进行比较,如果大于上一个的高度,次数就需要增加,高度大几次数就增加几,最后将现在的高度变成上一个,再输入新的高度成为现在的高度,以此类推。 #include<iostream>#include<c 阅读全文
posted @ 2022-08-15 15:11 4lovls 阅读(45) 评论(0) 推荐(0) 编辑
摘要:[2004年NOIP普及组] FBI树 分析:根据题意,根据01字符构建树,然后根据01字符所代表的字母后序遍历输出,首先是在长度只有1时看所对应的字母是哪个,然后就是长度不为1时,使用截取字符函数(substr)分别截取前半部分和后半部分,然后进行递归,最后是跟据题意输出(只是将原本的数字换成了有 阅读全文
posted @ 2022-08-15 11:36 4lovls 阅读(50) 评论(0) 推荐(0) 编辑
摘要:2001年NOIP普及组] 求先序排列 分析:根据题意,已知中序遍历和后序遍历求先序遍历,很显然是用递归求解。我们知道后序遍历中根节点是最后一个,所以可以首先确定根节点的位置,然后通过根节点找中序遍历中的根节点,根据中序遍历就可以确定左子树和右子树节点的个数,再看是否有左子树和右子树,如果有用递归继 阅读全文
posted @ 2022-08-15 08:06 4lovls 阅读(164) 评论(0) 推荐(0) 编辑
摘要:[2001年NOIP普及组] 数的计算 分析:根据题意,本题应用了递推,最重要的一点是找到相邻数据间的关系(递推式),在给出的n中,n/2得到的是他前一个数据(可能不止是前一个数据),前一个数包含的是他本身所符合题意的数的数量,再根据他前一个数据得到,再往前一个数据,就这样每轮都会叠加,从而得到递推 阅读全文
posted @ 2022-08-14 21:17 4lovls 阅读(52) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示