第八天:poj1010(深度搜索+剪枝,之前完全没有接触过,所以不会,所以多学!!)
来源:互联网 发布:高晓松音乐 知乎 编辑:程序博客网 时间:2024/04/30 12:34
题目意思:给出了N种邮票,每种邮票都有自己的面值(可重复)要满足购买者所需要的值m
1.所用的n种邮票可以重复选
2.张数《=4
3.尽可能使用最大面值的邮票
4.张数尽可能少
5.如果张数相同则面值最大的邮票数量多的优先
6.如果上面都一样,则输出tie
题目的个人分析:
一开始做的时候,首先对于题目的要求一定要看清楚,那个是优先的解,然后是怎么做?对于我这种没怎么学过什么高端算法的人来说,最好的打算就是枚举出来,然后选择最优解,但是这样我觉得是没有提高的,所以今天必须要换一种思路去解题。
网上的大牛们给出了一种挺棒的,我以前听说过但是没用过的算法(dfs+剪枝)
我是第一次接触这个算法,所以我一定要自己说一遍这个:
(我描述一个算法一定会用自己的语言以一种最简单明了的方式去说的,因为所有具体的细节网上说的太多太多,多说无益)
1.dfs运用在那里?
答:图的遍历
2.为什么要用dfs?
答:找最优解
3.怎么用dfs(dfs的思想是什么)?
访问图的一个顶点,然后让这个顶点的一个变量改变,这个变量代表这个顶点已经被访问过了,若存在未被访问过的相邻的点那么dfs(这个点)。
4.剪枝是什么意思?
简单的说排除那些遍历操作时不满足题目需求的。(很大程度上面让算法的时间复杂度降低了)
对于这道题目来说,简单的来说,用一个数组去保存最优解,然后dfs搜索满足的解(根据题目给的条件去判断),然后不断更新原来的最优解数组,因为邮票数量不超过4所以剪枝,还要判断tie的情况。
当然这道题可以循环4次把所有的解都找出来,然后找到最优解,主要是因为只有4张邮票,数量并不多。其实这道题做下来对于dfs只是一个初步的认识,之后一定会有更深入的学习。
- 第八天:poj1010(深度搜索+剪枝,之前完全没有接触过,所以不会,所以多学!!)
- 第九天:poj1011(又是深度搜索+剪枝,还是不会o(∩_∩)o )
- 我就是怕你学不会配色,所以..
- 献给和我同样学习前端脚本时,先学jQuery,而之前没有接触过JS的同学
- 因为年轻,所以没有选择
- 所以为什么要学ps?
- poj1010搜索
- 最近几天太忙了,所以没有更新博客。
- iconfont字体图标的使用方法--超简单! 我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以
- POJ1010 STAMPS(DFS+剪枝)
- poj 1011 Sticks 深度搜索+(剪枝)
- hdu_1016(剪枝深度优先搜索)
- 爱是给予,所以永远都不会失去(转载)
- 算24,不会递归,所以没用,很粗糙的程序
- 选拔赛1002-因为不会出数据所以这是道水题
- hdu 1240 深度优先搜索+剪枝(记忆化搜索)
- SqlServer 巧妙解决 多条件组合查询(只是一个很好的想法,但它不会走索引)所以效率不好
- 因为学校没教过 , 所以自己找个练练......
- Android动画效果translate、scale、alpha、rotate详解
- cenos 6.5安装VSFTPD服务器
- 求链表倒数第k个结点
- 查看Linux的发行版及版本号
- Linux 技巧:让进程在后台可靠运行的几种方法
- 第八天:poj1010(深度搜索+剪枝,之前完全没有接触过,所以不会,所以多学!!)
- ios 比较两个日期格式(NSString,NSDate)的大小/前后
- mysql优化总结(二)
- LBP(Local Binary Pattern,局部二值模式)
- android activity 与service通信
- android 异常记录
- android 关于图片压缩
- 动态修改TreeView某些节点TreeNode样式
- Netty In Action(一):Netty介绍