dfs深搜
一.01背包dfs
//回溯法,01背包
#include<iostream>
#include<algorithm>
using namespace std;
const int N=10;
int n,C;
int v[N],W[N];
double bestp;//当前最优值
double cw;
double cp;
int bestx[N];
int x[N];
typedef struct obj{
int w;
int v;
};
obj objt[N];
bool cmp(const obj a,const obj b)
{
return a.v/a.w>b.v/b.w;
}
int upbound(int i)//求i到后面n能装入的最大值
{
double cleft=C-cw;
double brp=0.0;
while(i<=n&&objt[i].w<cleft)
{
cleft-=objt[i].w;
brp+=objt[i].v;
i++;
}
if(i<=n)
{
brp+=cleft*(objt[i].v/objt[i].w);
}
return cp+brp;
}
void dfs(int t)
{
if(t>n)//到达叶子节点 ,也就说明已经存在了一条路径
{
for(int j=1;j<=n;j++)
{
bestx[j]=x[j];
}
bestp=cp;//保存当前最大价值
return ;
}
if(cw+objt[t].w<=C)//如果满足条件,装入,走左分支
{
x[t]=1;
cw+=objt[t].w;
cp+=objt[t].v;
dfs(t+1);//往下扩展
cw-=objt[t].w;//回溯
cp-=objt[t].v;
}
if(upbound(t+1)>bestp)//不满足条件则判断是否可能构成最优解
{
x[t]=0;
dfs(t+1);//往下扩展
}
}
int main()
{
cin>>n>>C;
for(int i=1;i<=n;i++)
{
cin>>objt[i].w>>objt[i].v;
}
sort(objt+1,objt+n+1,cmp);
dfs(1);
cout<<bestp<<endl;
cout<<"装入的价值分别是"<<endl;
for(int i=1;i<=n;i++)
{
if(bestx[i]==1)
{
cout<<objt[i].v<<' ';
}
}
return 0;
}
二.最大团问题
若一个图的每一对不同顶点恰有一条边相连,则称为完全图。完全图是每对顶点之间都恰连有一条边的简单图。n个端点的完全图有n个端点及n(n − 1) / 2条边,以Kn表示。它是(k − 1)-正则图。所有完全图都是它本身的团(clique)。
dfs深搜的更多相关文章
- CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】
[编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色 ...
- DFS 深搜专题 入门典例 -- 凌宸1642
DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 有 n 件物品 ...
- 【DFS深搜初步】HDOJ-2952 Counting Sheep、NYOJ-27 水池数目
[题目链接:HDOJ-2952] Counting Sheep Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- DFS深搜——Red and Black——A Knight's Journey
深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...
- Red and Black(DFS深搜实现)
Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...
- poj 2386:Lake Counting(简单DFS深搜)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18201 Accepted: 9192 De ...
- UVA 165 Stamps (DFS深搜回溯)
Stamps The government of Nova Mareterrania requires that various legal documents have stamps attac ...
- CCF 模拟E DFS深搜
http://115.28.138.223:81/view.page?opid=5 这道题问的很怪. 起点DFS,每一个点还要DFS一次,统计不能到终点的个数 数据量不大这样做也能AC #includ ...
- HDU_1241 Oil Deposits(DFS深搜)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- 解救小哈——dfs深搜
问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...
随机推荐
- Zookeeper 有哪几种几种部署模式?
部署模式:单机模式.伪集群模式.集群模式.
- Pipeline 有什么好处,为什么要用 pipeline?
答:可以将多次 IO 往返的时间缩减为一次,前提是 pipeline 执行的指令之间没有 因果相关性.使用 redis-benchmark 进行压测的时候可以发现影响 redis 的 QPS 峰值的一 ...
- Struts2框架提供的结果类型?
已配置结果类型名 类 名 描 述 dispatcher org.apache.struts2.dispatcher.ServletDispatcherResult 默认结果类型,用来呈现JSP页面 c ...
- Java 中的 final 关键字有哪些用法?
修饰类:表示该类不能被继承: 修饰方法:表示方法不能被重写: 修饰变量:表示变量只能一次赋值以后值不能被修改(常量).
- ConcurrentHashMap 的并发度是什么 ?
ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有 16 条线程操作 ConcurrentHashMap,这也是ConcurrentHash ...
- memcached 和 MySQL 的 query ?
cache 相比,有什么优缺点? 把 memcached 引入应用中,还是需要不少工作量的.MySQL 有个使用方便的 query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查 ...
- 学习saltstack (五)
Saltstack介绍 Salt三种运行方式 1.local本地运行2.Master/Minion3.Salt ssh Salt的三大功能 a.远程执行b.配置管理(状态管理)c.云管理:阿里云,aw ...
- 无需Flash录视频——HTML5中级进阶
前言 HTML5的权限越来越大了,浏览器可以直接调用摄像头.麦克风了,好激动啊.我们要用纯洁的HTML代码造出自己的天地. 视频采集 本篇介绍的栗子 都是在chrome 47 版本以上的,低版本的可能 ...
- Java基础之浅谈接口
前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...
- redis从0-1学习记录(完结)
1. NoSQL(not only sql):不仅仅是数据库,非关系型数据库,关系型数据库是以表格的行列进行存储的,而非关系型数据库是以键值对进行存储,不需要固定的格式.非关系型数据库的特点,方便扩展 ...