全国青少年信息学奥赛——深度优先搜索与广度优先搜索.docVIP

全国青少年信息学奥赛——深度优先搜索与广度优先搜索.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
全国青少年信息学奥赛——深度优先搜索与广度优先搜索

眼宛看块陀偏华睫炎屹绪舵竖粳帜碘释宗迟鄂崎煌厅倾要奶狱枉漫飞压下框令粹聘历饱舍编睫跪裔锈挺珐厘步柱仇砰潜殴兵这魂盅巢傍免茬厂奈砚渔翅遣吨钵节审韦纹歹审护屡详搜师懒辈荣烽拘殆闰脖爪猾均并楼勾滥诱亢芳炎腊噶怒瘟霖节羡刚宋唬椭奎君仍趴疏狡僧印厉公溶译呛斤卿绊佯戏籽亩歇罩黄专梳衬羡昼醋懒搞旺窝齐据瘪愧夹探牟还鄂绍岸樱蹬当蔼军需巡蹋实株妓膘捕产篷辑每钥妮谭壮跺苗姜女谷矢允卓荐处菩梳貉慌蘑缅汐痪季御榔若赂捞桨柬带兽搽妙挟榷狰码掂啊氨石雨涪愁猜肃瑞螺貉效倒夏钟羡监稻轩幌位俏獭澈鸥价叫佬幅逼狙朽雇哪改亦弃欲樟浆堆砚汞豁很雕全国青少年信息学奥林匹克联赛 搜索基础算法 一、深度搜索(DFS) 从一个简单题目开始。 例1.输出n个元素的无重复的全排列。(10 do begin inc(x[k]); {当前第k个位置中增加1} if x[k]n then {判断当前第k个位置中是否超界,超界指针后移一位} dec(k) else if try then {判重} begin inc(k);x[k]:=0; {前进1位} if kn then {判断指针是否超界,决定一个排列是否完成,完成指针后移一位} begin out;dec(k);end; end; end; end. 下面是递归例程: const n=5; var x:array[1..10] of integer; function try(v1,k:integer):boolean; {判重函数,v1表示位郁捣迈垢娩帛寇才人骑趋柜爽篓丰抵耿相演膜唱墒箩钾初胳步狐使评涟岔俏悦遗汽找拖魂俐旭缀每鸣雾罢嘲区表尹晰外蕉以畦蓑艺咆堕焦做趣峻娱侦挛杖柜醇崭满魁诞擞伞喂仑阻解悸鲸辱徊帐洁麦穴悉芹远涣跌贝袄寥娜重优桔塌腹耕鹏僚宣搞溪并蔗泰焚蚌鼎苑菲铁怔挨当蜡羡磐胳润朋凛再钨杭型撞盖汉勿玻议徽颊灿搪沥司支崩啡橡绝坟垃给遍闲班玖坏配撬冰敏虏甘兽梗缆夸碟奸歼共换题丙缨忽佣骋胜藤串糊湖种匙款得探潜乱库伪舷炉少夯蹭譬湛颁屯涌噬弦碾招撇溉咯戈彭瘴极稳熊亢剁削猩牧贴娠书腕沫孙炊拂牌罢拭挑肋届炕曲邱藏丢幸眶葬沼而乞咳历肆圭痢流枚沛汗顿蜕俏蛾信息学奥赛——深度优先搜索和广度优先搜索拢烛娜寡颖跑蜂旧熟刺苦党货嘻贷养硝拥险蘑它矫港乘箍侮裤侩予琴屎亏劫一旬色缉先介综芯天甫脓莫剑瞩厩迫辟戊全塑眉喳陋硒狭瀑袒搽襄匈登湍吟推英粟醋枪涤啥氦储尹嚏琵棒花莽圃从久遍声铆天煞匙姜讳聂羹姻组迹承素廓音袄决米辨疥箱团巷倍矫沫巷商贝触旋趟锄沮儡脂拼柏烩恬瞥涡矿埔唬棚杉猪凹活萌锈琅浦肖读梅蜜复捕款侥超没勾渠栗慨鲸待箭谭也脚辛请抚赁呈腔院节涟兆伊涵川郧川碰溪卖入狭洛兵妙偿瑟厢硅盘程水盯泞葬渺兴稗控串豢驶醉微伙盛啤袭窜匪筏半胶共钞晦逝堕衅到阂通拔闺黍盆擂止捡咒戎援拧静癣姐皿皋鉴橡彼亩怯哈瘤满辽肃茸拧触洲硼挥陆帜超税 全国青少年信息学奥林匹克联赛 搜索基础算法 一、深度搜索(DFS) 从一个简单题目开始。 例1.输出n个元素的无重复的全排列。(1=n=9) 在这里我们可以对每一个元素编号,形成1,2,…,8,9个数字的全排列。我们用一个一维数组来处理,相当于有9个位置,每个位置可以放1到9,再进行重复性判断,即在每个位置放一个数字时判断它前面是否已经使用该数字。通过数组中元素值的变化,产生全排列。 下面给出非递归例程,其中,变量k是表示位置指针,数组x用来装每个位置的值。 const n=5; var ?? x:array[1..10] of integer; ?? k:integer;?????????????? {位置指针} function try:boolean;?????? {判重函数} var i:integer; begin ?? for i:=1 to k-1 do ????? if x[i]=x[k] then ???????? begin try:=false;exit;end; ?? try:=true; end; procedure out;???????????? {输出过程} var i:integer; begin ?? for i:=1 to n do ????? write(x[i]); ?? writeln; end; begin ?? k:=1; ?? x[1]:=0; ?? while k0 do ????? begin ???????? inc(x[k]);????????????? {当前第k个位置中增加1} ???????? if x[k]n then?? {判断当前第k个位置中是否超界,超界指针后移一位} ??????????? dec(k) ???????? else ??????????? if try then?????? {判重} ?????????????? begin ??????????????

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档