当前位置: 首页 > news >正文

霞山网站建设公司大连网站开发师

霞山网站建设公司,大连网站开发师,孟村做网站,建筑设计学什么的曾经我们讲过枚举算法,那假设我们把枚举算法应用到搜索里呢? 1.搜索枚举 以前我们在进行枚举的时候是用了多层循环嵌套,但是当枚举的变量过多或者是输入的数量的时候就很难利用循环完成枚举了,不过我们可以尝试利用搜索进行枚举。…

曾经我们讲过枚举算法,那假设我们把枚举算法应用到搜索里呢?

1.搜索枚举

以前我们在进行枚举的时候是用了多层循环嵌套,但是当枚举的变量过多或者是输入的数量的时候就很难利用循环完成枚举了,不过我们可以尝试利用搜索进行枚举。

通常,我们通过一个 dfs 函数来完成搜索枚举,而通过参数表示当前状态。例如在大部分搜索枚举问题中,可以通过 step 或 depth 表示当前枚举层数,或使用 n 表示已经选入的数量,亦或在对于一些对 和 有限制的问题中,使用 sum 表示已经选入的数量之和。

让我们看一道能够使用搜索枚举实现的题目:现有方程a[1]x[1]+a[2]x[2]+a[3]x[3]+...+a[n]x[n]=0 2≤n≤10,−5≤a[i]≤5,−2≤x[i]≤2,x[i]∈Z

求解的总数。

Z 表示整数集合,其包括了:全体正整数、全体负整数和零。

能够估算所有的状态总数在 10的5次方∼10的7次方,能够枚举全部的状态。虽然能够使用 10 个循环完成,但此处使用搜索枚举更为方便。

int ans = 0;
void dfs(int dep, int sum) {if (dep == n) {if (sum == 0){ans++;}return;}for (int i = -2; i <= 2; i++) {dfs(dep + 1, sum + a[dep] * i);}
}

在很多搜索枚举的问题中,会要求我们打印解的具体内容,那么可使用数组来保存具体的解。如对于之前求方程解的问题,可将代码修改为:

int ans[15];
void dfs(int dep, int sum) {if (dep == n) {if (sum == 0){for (int i = 0; i < n; i++) {cout << ans[i] << " ";}cout << endl;}return ;}for (int i = -2; i <= 2; i++) {ans[dep] = i;dfs(dep + 1, sum + a[dep] * i);}
}

把在dep这一层选择的情况放在ans[dep]位置,ans数组就记下了目前枚举到的情况。n

在搜索枚举的过程中,我们能够根据题目的一些性质,对求解的过程进行剪枝优化,这个我们以后也会学到。但是对大部分题目来说,搜索枚举很有可能达到状态的上限,所以很有必要在决定使用搜索枚举之前确定状态的总数。

http://www.yayakq.cn/news/508379/

相关文章:

  • 网站做的跟别人的一样可以吗商品网站建设设计思路
  • 网站 做实名认证吗怎样创立一个网站
  • wordpress网站音乐播放器河池企业网站开发公司
  • 仿牌网站怎么做301跳转手机网站开发模拟
  • 做网站赚钱什么类型抽卡 wordpress
  • 中学生做网站网站流量不正常
  • 优质做网站哪家正规长春火车站出站要求
  • 中山h5模板建站销售
  • h5制作的网站wordpress多站列表
  • 宁波企业网站优化报价个人网站怎么做微商
  • 网站策划书是什么买了个域名 如何建网站
  • 物流信息网站网站建设q-9
  • 网站建设以及seo开发一款app软件可以赚多少钱
  • 做图表网站深圳公共资源交易网招标公告
  • 什么是网站源码建设工程类的网站
  • 进网站后台显示空白网站建设专家公司排行
  • 网销培训seo优化系统哪个好
  • 图列说明网站开发的流程怎么制作网站ping工具
  • 重庆医院门户网站建设国家企业信息信用信息公示网山东
  • 国内比较知名的大型门户网站电影网站模板html
  • 泰安哪里做网站厦门 网站开发
  • 承德住房和城乡建设局网站关闭了网页版视频如何下载
  • 安宁市建设局网站加密系统
  • vps设置网站访问用户权限淮阴区城乡建设局网站
  • 济南网站建设 选聚搜网络云南省建设工程电子网
  • 湖北省平安建设网站网站主页如何配色
  • 成都网站建设 网络公司石家庄专门做网站的公司
  • seo推广网站网上销售 网站建设
  • 网站开发文档撰写先做网站还是先域名备案
  • 一个好的网站的重要性17模板网站