一.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深搜的更多相关文章

  1. CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】

    [编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色 ...

  2. DFS 深搜专题 入门典例 -- 凌宸1642

    DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 ​ 有 n 件物品 ...

  3. 【DFS深搜初步】HDOJ-2952 Counting Sheep、NYOJ-27 水池数目

    [题目链接:HDOJ-2952] Counting Sheep Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  4. DFS深搜——Red and Black——A Knight&#39;s Journey

    深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...

  5. Red and Black(DFS深搜实现)

    Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...

  6. poj 2386:Lake Counting(简单DFS深搜)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18201   Accepted: 9192 De ...

  7. UVA 165 Stamps (DFS深搜回溯)

     Stamps  The government of Nova Mareterrania requires that various legal documents have stamps attac ...

  8. CCF 模拟E DFS深搜

    http://115.28.138.223:81/view.page?opid=5 这道题问的很怪. 起点DFS,每一个点还要DFS一次,统计不能到终点的个数 数据量不大这样做也能AC #includ ...

  9. HDU_1241 Oil Deposits(DFS深搜)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  10. 解救小哈——dfs深搜

    问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...

随机推荐

  1. mybatis-02-mapper生成器插件使用

    sb_mybatis <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  2. vim recording的使用方法

    使用vim时无意间触碰到q键,左下角出现"recording"这个标识,觉得好奇,遂在网上查了一下,然后这是vim的一个强大功能.他可以录 制一个宏(Macro),在开始记录后,会 ...

  3. Logistic 回归模型的参数估计为什么不能采用最小二乘法?

    logistic回归模型的参数估计问题,是可以用最小二乘方法的思想进行求解的,但和经典的(或者说用在经典线性回归的参数估计问题)最小二乘法不同,是用的是"迭代重加权最小二乘法"(I ...

  4. Emscripten教程之入门指导

    翻译:云荒杯倾本文是Emscripten-WebAssembly专栏系列文章之一,更多文章请查看专栏.也可以去作者的博客阅读文章.欢迎加入Wasm和emscripten技术交流群,群聊号码:93920 ...

  5. 一个让我很不爽的外包项目——奔驰Smart2015新官网

    七月份的下半个月,有幸做了奔驰 Smart 2015年新官网,包括手机端和PC端的宣传页,地址: PC端 手机端 这里,为了证明这个是一个事实,我还特意的留存了两张截图: 这里只想说明这么几个问题: ...

  6. 2015 年十佳 HTML5 应用

    前言 优秀的前端工程师戴着脚铐跳舞,究竟能把 HTML5 的体验推进到什么程度? 这些 Web apps 是我们运营云集浏览器的网上应用店一年来,我选出的十佳 Web apps.其中参考了同事们的意见 ...

  7. 【译】HTML表单高级样式

    系列文章说明 原文 在本文中,我们将了解如何在HTML表单上使用CSS,为那些难于自定义的表单组件加以样式.如前文所述,文本框和按钮很适合使用CSS,而现在我们得来探索HTML表单样式的那些坑了. 在 ...

  8. 微信小程序加密数据(encryptedData)解密中的PHP代码,php7.1报错

    问题描述 最近在开发微信小程序涉及到加密数据(encryptedData)的解密,用的是PHP代码,在运行后报错mcrypt_module_ xxx is deprecated,提示方法已过时了 经研 ...

  9. ES6-11学习笔记--解构赋值

    解构赋值:按照一定模式,从数组和对象中提取值,对变量进行赋值.   数组解构 对象解构 字符串解构 应用场景     曾经的赋值噩梦,非解构赋值数组: let arr = [1, 2, 3]; let ...

  10. java中finally有什么意义呢,在现实中?举例

    马克-to-win: finally有什么意义呢,在现实中?比如你开了一个流处理文件,可能没开成功,或开成功了,但后面的操作失败了,但不管你怎么样,你必须在一个地儿把它关闭,那就是finally块儿. ...