早教吧 育儿知识 作业答案 考试题库 百科 知识分享

汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数?已有代码,看不懂,inthanio(inta,intb,intc,intn,int*result)//a,b,c分别代表3根针,n是金片数{if(n==1){if

题目详情
汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数?
已有代码,看不懂,
int hanio(int a,int b,int c,int n,int *result) //a,b,c 分别代表3根针,n是金片数
{
if(n==1)
{
if(result[n-1]==c) return 0;
else return 1;
}
else if(result[n-1]==c) return hanio(a,b,c,n-1,result);
else if(result[n-1]==a) return hanio(a,c,b,n-1,result)+(1r[j];
cout
▼优质解答
答案和解析
int hanio(int a,int b,int c,int n,int *result) //a,b,c 分别代表3根针,n是金片数
//result是个长度为n的数组,第一位表示最小的金片,第二位表示次小的金片,...最后一位表示最大的数组.
//数组每个位上的值为a或b或c,表示该金片在哪个针上.显然,对于确定的result只有一种合法状态
{
if(n==1)
{
if(result[n-1]==c) return 0;
else return 1;
} //如果只有一个金片,平凡情况
else if(result[n-1]==c) return hanio(a,b,c,n-1,result);
//如果最大的金片在C针即第三根针上,该金片不动,问题转化为将n-1个金片移到C针上
else if(result[n-1]==a) return hanio(a,c,b,n-1,result)+(1r[j];//这里要防止r溢出
cout
看了 汉诺塔,给你任意一种合法状态...的网友还看了以下:

演绎推理总经理;我主张小王小孙至少提拔一人.懂事长说.'我不同意.哪项最能准确表达懂事长的意思A小  2020-06-27 …

“会英语”的“会”的意思快会:A.理解懂得B.熟悉、通晓C.表示有可能实现D.表示懂得怎样做或有能  2020-07-04 …

1.读句子,给带点的字选择合适的字义,把序号写在括号里.会:①理解懂得;②熟悉、通晓;③表示又可能实  2020-11-07 …

会:1.理解,懂得;2.熟悉,通晓;3.表示懂得怎样做或有能力做;4.表示擅长;5.表示有可能实现.  2020-11-11 …

会:1.理解,懂得2.熟悉,通晓3.表示懂得怎样做或有能力做4.表示擅长5.表示有可能实现.他会英文  2020-11-11 …

爱艺术并不表示懂艺术,懂艺术并不表示会艺术,艺术不是模仿,而是超脱是创造,它需要人去为它奉献,去牺牲  2020-11-11 …

如图漫画《先声夺人》中时髦女士的言行是()①不能礼貌待人的表现②文明素质低下的表现③懂得自尊自爱的表  2020-11-24 …

有修表或懂表的吗?以前未接触过机械表.朋友送给我一块,全自动的.有些现象不明白,特来虚心求教.表后盖  2020-11-29 …

会英语的会什么意思1.理解;懂得2.熟悉;通晓3.表示可能实现4.表示懂得怎样做或有能力做5.擅长快  2020-12-05 …

非金属活动顺序表?金属活动顺序表大家都知道是——钾钙钠镁铝锌铁锡铅(氢)铜汞银铂金,但是非金属的活动  2020-12-07 …