void hanoi_movei(int level, int i, int a, int b, int c)
{
int m;
int t;
int id=0;
m = 1<<level;
id = level+1;
while (m>>=1) {
id--;
if ((i&m)==0) {
t = c;
c=b, b=t;
continue;
}
i &= ~m;
if (i==0) {
printf("move %d from pole %c to %c\n", id, a+'A', c+'A');
return;
}
t=a;
a=b, b=t;
}
}
汉诺塔 第i次移动问题
最新推荐文章于 2022-09-29 01:16:32 发布