下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我是没见过和听说过这个问题用非递归解决过,曾经也尝试过,但是本人水平有限,没能解决,在论坛中,milee兄说他见过,Plotto兄说可以解决,所以在这里高分求解汉诺塔非递归算法,如果哪位仁兄有,贴出rr来,我给200分,如果不够,你开价的说问题点数:200、回复次数:11Top1楼zheng_can(nothrow)回复于2002-09-1223:41:44得分65fromALNG(?):#pragmahdrstop#include<stack>#include<iostream>structelement{unsignedcharnumber;//一个数字,为了节省,限制在255以内charfrom,to,buff;element(unsignedcharnum,charf,chart,charb):number(num),from(f),to(t),buff(b){});typedefstd::stack<element>han_stack;han_stackstack;voidmove(charfrom,charto){std::cout<<"movethetopdiskfrom"<<from<<"to"<<to<<std::endl;}inlinevoidpush(unsignedn,charf,chart,charb){elemente(n,f,t,b);stack.push(e);}voidhannoi(){while(!stack.empty()){elementtos(stack.top());stack.pop();if(tos.number==1)move(tos.from,tos.to);else{push(tos.number-1,tos.buff,tos.to,tos.from);push(1,tos.from,tos.to,0);//ther4thisnotusedpush(tos.number-1,tos.from,tos.buff,tos.to);)))////递归算法,从place柱移N个到to,buff为缓冲柱///*voidhannoi(unsignedN,charfrom,charto,charbuff)(if(N==1)move(place,to);else{hannoi(N-1,place,buff,to);move(place,to);hannoi(N-1,buff,to,place);)}*///#pragmaargsusedintmain(intargc,char*argv[]){push(5,'a','b','c');(void)hannoi();return0;}Top2楼maoxianwang(傻蛋)回复于2002-09-1300:20:51得分5哩哩哩八\、八\、八\、不知道这次老猫是给谁的分了ALNG(?)?????哈哈哈Top3楼maoxianwang(傻蛋)回复于2002-09-1300:21:16得分5开眼了Top
4楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于2002-09-1309:18:35得分0不好意思,用栈的方式跟用递归没有本质的区别,只是将系统自己完成的事变成程序员来操作,呵呵可能我没有表述清楚,我想要的是只将递归算法展开成用循环等c的标准方法实现的,栈的方法偶会,呵呵Top5楼heijunma(沙漠之鹰)回复于2002-09-1309:49:42得分85正好俺手头有一个非递归解决汉诺塔的程序,贴出来供大家烟酒烟酒。。。/*非递归汉诺塔*/voidmain();#include<stdio.h>(rings+1)#definewidthvoidmain()(/*hird/*onto/*last,next,x,manyrings?intrings,printf("howscanf("%d",&rings);for(x=1;x<=rings;x++)z[x]=width-x;for(x=0;x<=2*width;z[x]=1000;ifevennumberof*/if(rings%2==0)(last=1;(rings+1)/*hird/*onto/*last,next,x,manyrings?intrings,printf("howscanf("%d",&rings);for(x=1;x<=rings;x++)z[x]=width-x;for(x=0;x<=2*width;z[x]=1000;ifevennumberof*/if(rings%2==0)(last=1;s[2]=0;z[500],s[3];");/*putringsonfirstpeg*/x+=width)/*setbaseforeachpegrings,putfirstringonsecondpeg;ifs[1]=1;z[width+1]=z[rings];)else(last=2;s[1]=0;s[2]=1;z[2*width+1]=z[rings];)printf("from1to%d\n",last+1);s[0]=rings-1;while(s[0]+s[1])(ringto*/if(last==0)if(last==1)if(last==2)ringof/*whilefirstandsecondpegsaren'temptynextlasttopmoveissmallerofringsonthetwo'to'next=z[width+s[1]]<z[2*width+s[2]]?1:2;next=z[s[0]]<z[2*width+s[2]]?0:2;next=z[s[0]]<z[width+s[1]]?0:1;pegmustbelargerandaneven*/odd,ont*/pegsnotmoved'distance'away*/if((z[next*width+s[next]])>(z[last*width+s[last]])||((z[last*width+s[last]]-z[next*width+s[next]])%2==0))last=3-next-last;printf("from%dto%d\n",next+1,last+1);s[next]=s[next]-1;s[last]=s[last]+1;/*movefrom'next'to'last'peg*/z[last*width+s[last]]=z[next*width+s[next]+1];))Top6楼Alain_Delone(阿龙)回复于2002-09-1310:42:33得分5哇,不用栈啊,厉害!!Top7楼lizhongkun(泛型)回复于2002-09-1311:53:57得分5谁能测试上面的看看!!??Top8楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于2002-09-1513:05:09得分0zheng_can和heijunma(的方法是正确的,静下心来仔细想了想,其实汉诺塔本身不就是一个堆栈吗,不管你使用什么方法,都要对堆栈进行操作,递归算法通过函数的调用原理,利用系统对栈操作实现,而这r些非递归算法是我们直接对栈的操作,不知各位还有什么高见,呵呵Top9楼mylove0618(ADT)回复于2002-09-1513:34:39得分15个人认为,递归算法和迭代算法是对应的,尽管可能在某些问题上某种算法更快捷明了。但是总的来说,反映了思考问题的不同的方式,结果都是达到了解决问题的目的。对于汉诺塔问题,经典解法都是用递归算法。这里采用非递归算法,仅仅实现了递归算法的反向思
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度专业健身俱乐部会员服务合同3篇
- 2025年度铝合金门窗节能环保产品认证合同4篇
- 2025年度大型吊车机械租赁合作协议范本4篇
- 二零二五年度汽车维修设备租赁承包协议4篇
- 二零二五年度LED显示屏公共安全监控解决方案合同3篇
- 2025年度车库销售及停车场安全管理合同4篇
- 2025年汽车不锈钢管路项目投资可行性研究分析报告
- 2025版事业单位会计人才培养及储备合同3篇
- 2020-2025年中国工业X线探伤机行业投资潜力分析及行业发展趋势报告
- 2025年度出租车司机服务质量评价及激励合同4篇
- 2025届河南省郑州一中高三物理第一学期期末学业水平测试试题含解析
- 个体工商户章程(标准版)
- 七年级英语阅读理解55篇(含答案)
- 废旧物资买卖合同极简版
- 2024年正定县国资产控股运营集团限公司面向社会公开招聘工作人员高频考题难、易错点模拟试题(共500题)附带答案详解
- 李克勤红日标准粤语注音歌词
- 教科版六年级下册科学第一单元《小小工程师》教材分析及全部教案(定稿;共7课时)
- 中药材产地加工技术规程 第1部分:黄草乌
- 危险化学品经营单位安全生产考试题库
- 案例分析:美国纽约高楼防火设计课件
- 移动商务内容运营(吴洪贵)任务一 用户定位与选题
评论
0/150
提交评论