汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数?
问题描述:
汉诺塔,给你任意一种合法状态,你能计算出从当前到把所有的金片移动到第三个针上的最小步数?
已有代码,看不懂,
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,...能不能讲一下算法思路,算法复杂度分析