选择最合适的语言做一个项目是非常重要的。但,熟练的掌握自己的武器,这也是非常重要的。

=====================================================================================================================

继续总结搜索类的题目,这一类的题目。眼下仅分析简单粗暴的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, 简单的修剪搜索的更多相关文章

  1. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  2. 深度优先搜索DFS和广度优先搜索BFS简单解析

    转自:https://www.cnblogs.com/FZfangzheng/p/8529132.html 深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每 ...

  3. POJ 2243 简单搜索 (DFS BFS A*)

    题目大意:国际象棋给你一个起点和一个终点,按骑士的走法,从起点到终点的最少移动多少次. 求最少明显用bfs,下面给出三种搜索算法程序: // BFS #include<cstdio> #i ...

  4. [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述

    Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...

  5. SharePoint2010搜索的简单设置

    1.  开启搜索服务,管理中心 – 应用程序管理 – 服务应用程序 – 管理服务器上的服务 2.  点击进去,启动"SharePoint Foundation搜索"."S ...

  6. Django中Q搜索的简单应用

    本节涉及: 1.Q搜索在前后端的设计 2.Django中Queryset对象的序列化(由后端扔给前端的数据必然会经过序列化) 3.前端动态地构造表格以便显示(动态创建DOM对象) 思路: 用户通过前端 ...

  7. Sharepoint2013搜索学习笔记之搜索构架简单概述(一)

    Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...

  8. 深度优先搜索(DFS)

    [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...

  9. 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)

    需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...

随机推荐

  1. Mysql加入用户时的错误问题

    比如:加入用户 insert into mysql.user(Host,User,Password) values("localhost","test",pas ...

  2. NPOI 创建Excel,数据读取与写入

    <1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  3. Java EE (10) - 资源服务器的整合

    加密(Encryption)和数字签名(Digital Signature)通常被用于保护通讯--加密用来防止数据传输过程中的窃听--数字签名用来防止数据传输过程中的篡改 JDBC: 整合关系型数据库 ...

  4. 【spring源代码分析】--Bean的解析与注冊

    接着上一节继续分析,DefaultBeanDefinitionDocumentReader的parseBeanDefinitions方法: protected void parseBeanDefini ...

  5. linux环境下的线程的创建问题

    pthread_create函数用于创建一个线程 函数原型 #include<pthread.h> int pthread_create(pthread_t *restrict tidp, ...

  6. JS创建 trim() 方法,此方法在IE7、IE8中不存在 需要自定义

    function trim(str){ //创建空格对象 var space = new String(" "); /* str = trimLeft(str,space); st ...

  7. windows phone (19) 深入了解TextBlock

    原文:windows phone (19) 深入了解TextBlock TextBlock 一般用于显示文本的元素,我们最为经常用到的是该类的Text属性,其实显示文本有两种呈现方式,一个是设置内部文 ...

  8. java获取指定地址图片高度宽度简单代码

    package com.test; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.In ...

  9. HTML中心在页面上弹出自定义表单层(实现可能拖累)

    使用DIV窗体来动态显示内容的原理:首先採用CSS和HTML隐藏弹窗中的内容,然后利用JavaScript(本教程中是JQuery)来动态显示它们.这样的效果不仅可以充分利用有限的版面空间,并且可以提 ...

  10. spring3.0注解定时任务配置及说明

    spring注解方式的定时任务配置: 第一步:spring配置文件 <?xml version="1.0" encoding="UTF-8"?> & ...