您的位置:首页 > 其它

【算法】算法是一种思维

2016-01-13 17:50 253 查看
算法是一种思维。

在下这段时间对算法的理解应该要归结于这样一句话

大胆假设 小心论证嘛

起初最早对算法有个概念 是贪心算法

对贪心算法的表述

百度百科是这样说的

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

当时其实对这种说法还是一知半解的(现在好像也是)

所以对算法到底是什么 一直得不到一个明确的答案

在想明白之前

在下感觉做题的收益有点低

题目地址: HPU15级个人赛 (hpuacm)

而这次的个人赛有八道题目

在下结束之后忘了保存代码了

而又感觉去网站提交记录找 没必要

所以对于这些题目的代码

应该会上传一个重新写的版本

八道题目分别是:




就不一一截图了

以后慢慢整理

这篇文章就是从解题思路上来简单说说

Problem A 利息计算 :

作为一道纯粹的数学计算题

一定程度上考察了对数据类型和输入输出的控制

但是这种题目作为签到题本身

我觉得更重要的目的是让自己找到感觉

不至于在接下的答题中慌乱

而这此次比赛我恰恰犯了这点错误

对一团数字不加思考就选择先做B题

然而……

Problem B - 18岁生日 :

在下这次个人赛的噩梦之源

又是一个关于闰年的问题

从这一题

在下第一次知道闰年并不是严格的四年一次

一个回归年不是365天,而是365天5小时48分46秒,多出的时间就会累积起来,新年就会后移,所以每隔四年就设一个闰年,这一年的二月改为29天.这样,闰年就有366天.但是,这样每一百年又差不多多了一天,所以又规定”百年”不设闰,即”百年24闰”.但百年扣一天闰还是不刚好,于是又规定,公元年数为400倍数者设闰.

而我原先一直以为 1900 不是闰年是个数学问题

也就是1988 1902都是闰年(其实并不是)

但是经过这次教训也是学习了

同时更深层次的

也是对自己的一个教训

太过自信了

也就是过于相信自己是知道出题人的想法的

(不一定被4整除 被100整除的还要能被400整除)

本来一般的题目这种想法就够了

然而这一题我所采用的方法

恰恰用到了四年一闰这个思想

(这个想法是错误的)

具体解法讨论见题解文章

Problem C - Magic Spheres

这一题也是迷之WA

各种情况都想不通

然后发现了一句……

he needs at least x blue, y violet and z orange spheres.

重点是……

at least

也就是上面的数据没必要完全等于下面的

只要能把上面变化成大于等于下面的就好了

然而给的两组Yes的数据全部满足

等于下面的

所以导致对题目理解错误……

想想原因

就是对于这种英文题目

我一般是对照输入输入猜题目意思

所以导致了先入为主的思想

这也是以后面对英文需要警醒的一件事情

Problem D - The Best Gift

这一题神奇之处在于

我竟然没用到题目给的m就顺利AC了-.-

Problem E - Red and Black

这题是道经典的搜索题

Problem F - Load Balancing

负载均衡 序列平衡的一种算法

当时比赛因为前面用的时间太长了

导致这一题都没时间看了……

(主要也是看到别人都WA了好多 就没写)

Problem G - The Suspects

按照题意应该是并查集

不过当时我的第一眼思路是往搜索想的

最终也是做出来了

Problem H - Networking

最小生成树问题

之前做过类似的了

经过这八道题

其实我在思考到底什么是算法

如果它只是一种解题方法的话

我觉得似乎并不恰当

比如有些题目 如

Problem G - The Suspects

属于简单的并查集

但如果用搜索却也并不难理解

又或者

Problem E - Red and Black

属于搜索 但bfs dfs却都可以解答

那么 什么是算法

我认为把算法归结为一种解题思维

或许更加恰当

也就是 不需要把算法看做一种模板 而是一种解题的思路

区别是什么呢

我觉得就是判断一道题是像是某某算法的题目

脑海里第一意识出现的是算法的思想 还是算法的代码框架

我觉得更好的情况还是理解算法的本质

这样无论题目千变万化 总可以找到解题的钥匙

而不用纠结于它到底符合哪一个模板

算法是一种思维

这便是我现阶段对算法的理解

先照着这条路走吧

然后慢慢修正自己的观点

更何况

无论怎样理解

对一个算法还是要认真学习的

甚至说更加努力的去学习

探究其本质的一些东西

话说我最近貌似开始养成

把一篇文章分成几天来写的习惯了-.-

貌似有时候会影响思路~

哈哈哈

尽量还是一口气写完吧~

适当补充还是可以的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: