![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
我是小菜狗
这个作者很懒,什么都没留下…
展开
-
7-2 一元多项式的乘法与加法运算——链表实践
7-2 一元多项式的乘法与加法运算 (50分)设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 -2 03 5 20 -7 4 3 1输出样例:15原创 2020-10-31 12:05:11 · 641 阅读 · 0 评论 -
狄克斯特拉算法(Dijkstra)——算法思想及代码实现
这个算法可是属于真正的老经典算法了,这学期离散数学里学到的唯一一个算法也就是这个Dijkstra算法,这个算法实际上就有贪心算法的味道在里面,即每次都确定一个顶点的最优路径,直到遍历全图。由于本人水平真的过低,这学期在离散数学中学这个算法的时候真的是花了很多很多时间才弄明白算法原理,曾一度怀疑人生并且无数次想要撕碎这个课本。我真的搞不懂明明很简单的一个算法,为什么放到教科书上面会给花里胡哨地加上一些专有名词,然后变得极度抽象,我是真的是很无语。。。个人感觉我们学校订的教科书编的不是很好(纯粹个人感觉。)这原创 2020-07-23 14:19:05 · 2902 阅读 · 4 评论 -
暴力美学2——BFS广度优先搜索
最近在看《算法图解》这本书,我对算法的学习顺序也是根据这本书展开的,这本书上只写了BFS广度优先搜索,没有写BFS深度优先搜索,因此考虑到俩者的关联性,我就先去初步掌握了DFS之后再来学习BFS,有了前面的基础,DFS就相对好掌握很多了。DFS算法和BFS算法都是遍历图的算法,只是它们遍历的方式有所不同,这就会导致在实际应用中它们的应用场景也会有所不同,但其实在很多情况下俩者都是可以相互替换的。其中这篇文章中讲的DFS算法广度优先算法的主要目的是找出最短路径(但不是带权的),举三个《算法图解》上的例子:原创 2020-07-18 17:38:27 · 257 阅读 · 0 评论 -
“暴力美学1”——DFS深度优先搜索
作为新时代青年,“暴力”二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念作为新时代青年,“暴力”二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇了喜欢篮球并且经常看NBA的朋友应该都知道NBA俩个暴力美学的代表,小皇帝“詹姆斯”和唐装“威少”。他们二人完美阐述了暴力美学的概念,“观赏者本身往往惊叹于艺术化的表现形式,无法对内容产生具体的不舒适感。”当我们把暴力美原创 2020-07-15 15:15:21 · 1114 阅读 · 0 评论 -
分而治之(D&C)——递归思想(算法图解第一弹)
最近在看一本书叫《算法图解》,里面的内容写得都比较浅显易懂,很适合我这个菜狗学习,因此之后一段时间就通过博客记录我学习的进度。算法的重要性就不需要我过多说了,下面我就直接开始介绍我刚掌握的一种思想,“分而治之”。其实这个思想说白了就是如何将一个实际问题转化成递归问题。这个分而治之思想的祖宗就是递归。大一上学习这块知识的时候属实头疼了很久,这个递归算法刚开始接触的时候确实有点难度(可能也是我太菜了)其实D&C思想就分成俩步,一:寻找尽可能简单的基线条件。(也就是什么时候停止递归)二:将大问题原创 2020-07-11 21:20:53 · 914 阅读 · 3 评论 -
由二分算法引发的一些感悟
后天期末考试,今天复习了一下二分查找,这个真的是高中学到精的不能再精的一个算法了,真的是太经典了,看到这个我真的想到了曾经高二暑假的那个往死里刷VB刷题宝典的愣头青…那个时候的我真的是刷出味道来了,就真的是全身心的投入,就是那种越做越爽的感觉,到了大学,难度拔的太快,一开始不是很适应。也焦虑过很长一段时间吧,但所幸都坚持下来了,都能挺过来。。。高中的时候自命不凡,总是以为给我时间可以学好所有我想要掌握的知识,到了大学之后,才发现自己的想法是多么幼稚。。大学里面难的知识太多了,就算一门很简单的课程你若是深入下原创 2020-07-05 16:47:12 · 174 阅读 · 0 评论 -
Problem D: josephus问题——约瑟夫环变式
又碰到约瑟夫环的问题了,有一说一,这个经典问题确实很有意思,这道题目主要是引入了几个变量罢了,本质完全一样。但是这道题目测试点出的不够严谨,没有考虑到n=1,以及m=1的情况,使得我起初不够完善的代码也能AC,这些地方我在给出的代码已经补上去了。Problem D: josephus问题Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 755 Solved: 298Descriptionjosephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数原创 2020-07-03 16:38:21 · 383 阅读 · 0 评论 -
Problem G: 礼品分组——小算法(和二分查找有些类似)
去年考试的压轴题,这个就是考察算法,如何根据题目在最短的时间内搭建合适的算法完成这道题。其实这道题的思想不算很难,就怕一些人考试的时候紧张脑袋不清楚那就没办法了。Problem G: 礼品分组Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1061 Solved: 162Description元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括原创 2020-06-21 14:48:19 · 685 阅读 · 0 评论 -
Problem G: 深入浅出学算法008-求佩尔方程的解————如何判断完全平方数
这道题目有个小细节,卡了我一下,因此记录一下。题目很简单,说白了这个题目考察的就是你会不会判断一个数是不是完全平方数。还好高中VB学过一点,因此判断这方面倒没有什么问题。主要是我忘记在判断的时候转换成整数了。Problem G: 深入浅出学算法008-求佩尔方程的解Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 6363 Solved: 2364Description求关于x y的二次不定方程的解 x2-ny2=1Input多组输入数据,先输入原创 2020-06-20 17:11:34 · 348 阅读 · 0 评论 -
Problem B: 深入浅出学算法001-求最大公约数————辗转相除法
刚好复习一下怎么求最大公约数,大一上学python的时候想破脑袋都做不出来的题目,现在想想当初的自己是真的菜。。Problem B: 深入浅出学算法001-求最大公约数Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 3982 Solved: 2448Description求2个整数a、b(a>b)的最大公约数。Input多组测试数据,第一行输入整数T,表示组数 然后是T行,每行输入2个整数分别代表a和bOutput对于每组测试数据输出1行原创 2020-06-20 15:47:52 · 1391 阅读 · 0 评论 -
Problem F: 用链表实现约瑟夫环———形变神不变
因为这道题目比较简单,可以采用链表的思想而不用书上链表的形式,即通过数组搭建链表,简单实现。Problem F: 用链表实现约瑟夫环Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1207 Solved: 630Description你听说过约瑟夫问题吗?问题大致如下:首先n个人围成一个圈,标记为1到n号。接着,从1号开始报数(从1开始),然后2号报数,然后3号。。。当有人报到到m时,这个人就要踢出比赛,然后从被踢出的人的下一个人开始,重新报数(从1原创 2020-06-20 11:59:13 · 331 阅读 · 0 评论 -
Problem A: 纪念邮票——小算法(枚举优化)
又是一道暴力破解没有卵用的方法,看到测试数据的范围我就知道,这题又是需要找到更好的算法,本人水平实在不行,在暴力枚举过后实在无法搞定,因此临时去网上现学,最后得知此题竟然用的是高中的数学知识,我艹了。。。下面先给出题目Problem A: 纪念邮票Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 611 Solved: 127Description邮局最近推出一套邮票, 这套邮票共有n张,邮票面值各不相同,按编号顺序为1分,2分,3分… 小航是一个集邮原创 2020-06-19 22:55:02 · 321 阅读 · 0 评论 -
1361: 最大盈利——dp问题
由于本人水平较低,尚未接触最优算法,因此在做这题的时候自以为非常NB的用了暴力解法,结果就是一直Time Limit Exceed,然后没有办法的我只能去网上搜博客寻找思路,结果刚好找到一篇,原来这道题目是需要用dynamic programming(简称dp),即动态规划。忽然回想起来,其实这学期也零零散散地接触了一些动态规划的问题,这个思想确实有点小难,不是很容易弄懂,我目前也只是处于门外汉的境界,目前看到过的dp问题有:背包问题,最短路径,关键路径。其实这一类问题都是大同小异,关键是把握dp问题原创 2020-06-16 11:27:13 · 609 阅读 · 0 评论 -
Problem C: 铺地砖——迭代小算法
搜了一下百度,网上很多人都对这题没有深入下去进行解释,大多数只是通过枚举法就得出结论,因此我写了这篇博客讲讲我对这个题目的理解。首先这道题目通过枚举法可以发现从第四项开始,方法总数就是前三项的和了,然后不断重复迭代就可以得出结论。但是这又是为什么呢?这其中要如何去解释呢?我就简单谈谈我的理解(我也是新手,大佬勿喷),设a[n]为铺满长方形1×n的方法数。首先,自第四项开始,n就是大于等于4了,也就是说,我们可以先将n分成1和n-1,然后a[n-1]我们之前已经求出来,因此这边就直接拿过来加,再之后原创 2020-06-12 15:09:27 · 2508 阅读 · 2 评论 -
深入浅出学算法——n个1(整除求余的优化)
主要介绍本题目中设计的优化算法原创 2020-05-30 07:42:27 · 1684 阅读 · 0 评论 -
1008: 直接插入排序——小算法
挺水的一道题,这道题我甚至在高中刷题的时候刷到过,也算是一段高中的回忆。但是当时做的时候没有想起来,有点可惜,这道题的关键就是比较、后移、插入。掌握这三个基本就没有问题了。不过还会有一个卡人的小点,就是当第一项进行位移的时候,要在最后把它补上去。因为第一项前面没有数了,无法继续比较,程序默认不需要排序,因此就会导致第一项的数没有发生改变。1008: 直接插入排序Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1535 Solved: 320Descri原创 2020-06-10 08:43:39 · 417 阅读 · 0 评论 -
选择排序 and 冒泡排序
简单复习下选择排序,这是高中VB最基础的一个排序算法,到了大学一直在做一些复杂的题目,忽视了这些最基础的东西,导致编程时一卡一卡的,今天再打一遍选择排序。假设有n个数据,那么就只需要排好n-1个位置,就能实现排序效果。假定排序数组为a【n+1】(第一个空出来,个人习惯)选择排序主要就是从前往后(当然可以从后往前,思想一样的,不变应万变),设置循环,变量为i,i的初值为1,一共循环n-1次,每次初始化最小值位置min为i,然后开始内循环,从a【i+1】到a【n】中找到比a【min】更小的数,然后重置mi原创 2020-06-11 23:25:30 · 261 阅读 · 0 评论