简单搜索dfs, 简单的修剪搜索
选择最合适的语言做一个项目是非常重要的。但,熟练的掌握自己的武器,这也是非常重要的。
=====================================================================================================================
继续总结搜索类的题目,这一类的题目。眼下仅分析简单粗暴的dfs搜索,以及简单的剪枝。
參考的题目:
- http://acm.hdu.edu.cn/showproblem.php?pid=1864
- http://acm.hdu.edu.cn/showproblem.php?pid=1881
对于pid=1864,最大报销额的题目。细节部分非常多,改动了非常久才正确。
核心部分,加了搜索剪枝的:
- void cal(int t ,double money ,double remain)
- {
- if( t >= len)
- {
- if( money > max) max = money;//更新最大值
- return ;
- }
- if( money + remain <max) return ; //假设剩下的钱加上现有的钱 都达不到max,那么永远都达不到max, 所以直接返回
- cal(t+1, money, remain-mon[t]); //先不要这张发票
- if( money + mon[t] <=q)<span style="white-space:pre"> </span> //满足条件。要这张发票
- cal(t+1, money+mon[t], remain- mon[t]);
- }
对于pid=1881。毕业bg的题目,要想到先排序。再处理数据,有选择的处理的问题。
核心部分是朴素的搜索dfs:
- void dfs(int i, int h, int time)
- {
- if(i >= n)
- {
- if( h > max) max = h;
- return ;
- }
- dfs(i+1, h, time);
- if( bg[i].l + time <= bg[i].t)
- dfs(i+1, h + bg[i].h, bg[i].l + time);
- }
依然上一个剪枝的版本号,也能够ac仅仅是时间变长了。也许是我剪枝的方式不正确,要么就是这道题的数据剪枝反而效果不好。由于之前已经排序了。
- void dfs(int i, int h, int time,int remain)//添加了数据的传输,以及比較
- {
- if(i >= n)
- {
- if( h > max) max = h;
- return ;
- }
- if( h + remain < max) return;
- dfs(i+1, h, time, remain - bg[i].h);
- if( bg[i].l + time <= bg[i].t)
- dfs(i+1, h + bg[i].h, bg[i].l + time, remain - bg[i].h);
- }
版权声明:本文博主原创文章。博客,未经同意不得转载。
简单搜索dfs, 简单的修剪搜索的更多相关文章
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析
转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...
- POJ 2243 简单搜索 (DFS BFS A*)
题目大意:国际象棋给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次. 求最少明显用bfs,下面给出三种搜索算法程序: // BFS #include<cstdio> #i ...
- [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述
Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...
- SharePoint2010搜索的简单设置
1. 开启搜索服务,管理中心 – 应用程序管理 – 服务应用程序 – 管理服务器上的服务 2. 点击进去,启动"SharePoint Foundation搜索"."S ...
- Django中Q搜索的简单应用
本节涉及: 1.Q搜索在前后端的设计 2.Django中Queryset对象的序列化(由后端扔给前端的数据必然会经过序列化) 3.前端动态地构造表格以便显示(动态创建DOM对象) 思路: 用户通过前端 ...
- Sharepoint2013搜索学习笔记之搜索构架简单概述(一)
Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...
- 深度优先搜索(DFS)
[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...
随机推荐
- hdu4857 逃生 bestcoder round1 A
题目要求要求在满足约束条件的情况下,使小的序号尽力靠前. 坑点就在这里.小的序号尽量靠前并非代表字典序,它要求多种情况时,先使1靠前(可能1仅仅能在第2或第3位 那么就要使它在第2位),其次2,3. ...
- VS2008--无法找到“XXX.exe”的调试信息,或者调试信息不匹配
------解决方案----- 1. 关闭掉Visual Studio 实例. 2. 找到解决方案下的.suo文件并删除之. 3. 重新启动Visual Studio,或者直接双击.sln文件打开 4 ...
- Linux渗透+SSH内网转发
http://www.jb51.net/hack/58514.html http://blog.chinaunix.net/uid-756931-id-353243.html http://blog. ...
- POJ 1205 Water Treatment Plants(递推)
题意 建设一条河岸的污水处理系统 河岸有n个城市 每一个城市都能够自己处理污水 V 也能够把污水传到相邻的城市处理 >或< 除了你传给我我也传给你这样的情况 其他都是 ...
- C++0x新特性
我是在一个帖子上摘抄的大神语录...感谢supermegaboy大神,给了详尽的解释 下文是一篇转载的Wikipedia的译文,从语言和库双方面概述了C++0x. 右值引用与转移语义 在标准C++语言 ...
- 多线程——达到Runnable介面
部分博客(多线程--继承Thread类)介绍了java多线程的第一种实现方法--继承Thread类.这篇博客介绍另外一种方法--实现Runnable接口,并实现run方法. 还用上篇博客的样例.如今用 ...
- C#语音录制
客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo——倾情奉献! 一.需求提出 客服小妹跟我说,每天要统计新加好友数,得先记下昨天的数目,然后查看今天的数目,还要相减,打 ...
- 【NOIP2002】矩形覆盖 DFS
首先,我喜欢愤怒搜索,因为尽管说K<=4,的确K小于或等于3的. 当然某些K<=3还600ms的我就不加评论了. 好吧,可是怎么搜呢?我们考虑到矩形数量非常少,所以能够怒搜矩形. 一些神做 ...
- Java乔晓松-android中获取图片的缩略图(解决OutOfMemoryError)内存溢出的Bug
由于android获取图片过大是会出现内存溢出的Bug 07-02 05:10:13.792: E/AndroidRuntime(6016): java.lang.OutOfMemoryError 解 ...
- simpleDateFormat日期格式转换
1------------------------------------------------------------------------------------- package com.n ...