目录

  • 92. 递归实现指数型枚举
  • 神奇的口袋
  • 01背包问题

在做题的时候,有的问题就是问你这个东西选或不选的问题。专业说法叫做01背包。
我个人觉的叫选不选问题更能通速易懂。

92. 递归实现指数型枚举

https://www.acwing.com/problem/content/94/

这就是一个典型的选或不选问题。
对于每一个数我们可以选,也可以不选。

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
const int max=20;
int a[20];//用这个数来记录一下我们对于每个数的状态
// 0代表未处理 1代表选 2代表不选
void dfs(int u)//代表当前选的数是第几个(从下标0开始)
{if(u==n){for(int i=0;i<n;i++){if(a[i]==1){printf("%d ",i+1);}} printf("\n");return;}a[u]=1;//选这个数dfs(u+1);a[u]=0;//恢复现场a[u]=2;//不选这个数dfs(u+1);a[u]=0;//恢复现场
}
int main(void)
{cin>>n;dfs(0);
}

神奇的口袋

http://codeup.cn/problem.php?cid=100000583&pid=2

这其实也是一个选或者不选的问题。不过加了一点的限制。
要保证体积和为40。

#include<cstdio>
#include<iostream>
using namespace std;
int V=40;
int n;
int a[1005];
int ans=0;
void dfs(int index,int v)//index 当前的第几个物品的判断选不选(从0开始的)  v当前的体积
{if(index==n){if(v==40)ans++;return;}dfs(index+1,v);//不选 dfs(index+1,v+a[index]);//选
}
int main(void)
{while(cin>>n){           for(int i=0;i<n;i++){scanf("%d",&a[i]);}    dfs(0,0);printf("%d\n",ans);ans=0;}return 0;
}

01背包问题


这也是选不选的问题,不过是在各种情况中选择价值最大的。
当然本题用dfs()解决是不可以的。因为n的最大值可以为1000那么时间复杂度为21000太大了。
不过本文主要是讲的dfs()的思想。所以列了出来。对于这种数据量大的情况还是用动态规划解决方便。

#include<cstdio>
#include<cstring>
#include<iostream>
#define max 10005
using namespace std;
int n,V;
int w_arr[max];
int v_arr[max];
int M=-1;//保存最大的
void dfs(int index,int v,int w)//v 代表当前的体积  w代表当前的价值
{if(index==n) {if(v<=V){if(w>M){M=w;}}return;}dfs(index+1,v,w);//不选   if(v_arr[index]+v<=V)dfs(index+1,v_arr[index]+v,w_arr[index]+w);//选
}
int main(void)
{cin>>n>>V;for(int i=0;i<n;i++){scanf("%d %d",&v_arr[i],&w_arr[i]);}dfs(0,0,0);printf("%d\n",M);return 0;
} 

dfs解决选或不选问题相关推荐

  1. Android之自定义checkbox并解决内容和复选框之间的具体问题

    1.问题 checkbox自定义并解决内容和复选框之间的具体问题 2.代码实现 1.select_checkbox.xml文件 <?xml version="1.0" enc ...

  2. DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法(转)

    DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法(转) 参考文章: (1)DevExpress XtraGrid RepositoryIte ...

  3. 【已解决】华硕天选rtx2060安装Ubuntu20黑屏问题

    [已解决]华硕天选rtx2060安装Ubuntu20黑屏问题 问题描述 如何解决 解决方案 问题描述 想把华硕天选自带的win10系统更换为Ubuntu20,前面几乎很正常.问题出在安装后第一次重启后 ...

  4. Vue3 - Element plus 实现 “带分页“ 表格组件,实现跨页进行 “分页勾选“ 的多选功能(解决分页表格组件 <el-table> 跨页后已前勾选的行自动消失问题)详细示例解决教程

    前言 在 Vue3 项目中,使用 Element Plus 组件库的表格组件时,出现了跨页勾选复选框消失的问题. 本文实现了 vue3 中 element plus 表格组件 <el-table ...

  5. 【已解决】lol盲选局是什么?

    lol盲选模式是什么 在lol战队比赛中,会出现2比2平的情况,那么这样会出现下一盘盲选的情况,按理讲应该是10个玩家都随机点英雄,为什么在"韩国龙争虎斗怀"中,解说的那两个人,其 ...

  6. jquery高版本全选与全部选无法正常工作

    jquery执行全选/全不选的操作 <script type="text/javascript"> $(function(){ $('#checkAll').click ...

  7. JQuery中checkbox勾选/取消勾选的诡异问题(attr和prop)

    #1.使用attr()实现勾选的问题 //HTML伪代码 <form>你爱好的运动是?<input type="checkbox" id="Checke ...

  8. 【前端2】js:原始类型,运算符,调试,页面加载,轮播图,Bom(对象,时钟),Dom(全选全不选,省市级联,隔行/触摸换色,表单校验)

    文章目录 1.js两种引入:js最终要引入到html在浏览器中运行 2.js五大原始类型:undefined 3.js的运算符和流程控制:js不支持单&和单|性能低 4.案例_99乘法表:So ...

  9. 【转】Android 带checkbox的listView 实现多选,全选,反选 -- 不错

    原文网址:http://blog.csdn.net/onlyonecoder/article/details/8687811 Demo地址(0分资源):http://download.csdn.net ...

最新文章

  1. Python学习笔记-进度条
  2. 《重构-改善既有代码设计》读书笔记-重构篇
  3. 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
  4. Acwing第 29 场周赛【完结】
  5. 单片机光敏电阻控制蜂鸣器_走进单片机|第七期:湿度检测
  6. linux远程执行本地脚本,ssh远程执行命令方法和Shell脚本实例
  7. JavaScript权威指南--客户端存储
  8. Vue之旅-Vue环境搭建
  9. 三十四、Scrapy中的CrawlSpider
  10. Android DDMS位置
  11. HTML自动换行的问题
  12. spring连接mysql出现问题_使用spring连接mysql数据库出错
  13. Z表数据EXCEL导入
  14. lambda捕获this_非捕获Lambda的实例
  15. MVC中跳转到其他页面,并传参数
  16. axure实现搜索功能_vue实现模糊搜索功能
  17. spring boot----简单入门
  18. 数据可视化建设是企业战略决策之刚需
  19. mfc之解决vs2010调试监视器(MSVSMON.EXE)未能启动的问题
  20. 清华大学2017计算机录取分数线,2017年清华大学录取分数线

热门文章

  1. 安裝TA-Lib到想要罵髒話
  2. php中cookie的用法
  3. ###STL学习--标准模板库
  4. 关于用飞信框架运行net程序-用批处理运行
  5. __stdcall 和 __cdecl 的区别浅析
  6. MATLAB之相关函数
  7. 基于LSTM的情感分类案例:Tensorflow代码
  8. Hyperledger Fabric 核心模块(6)configtxlator工具
  9. 甲骨文预言机平台(2)OCI 系统架构
  10. 初等数论--二次剩余与二次同余方程--既约剩余系中二次剩余的个数