如何河内这种迭代塔工作? C [英] How does this iterative Tower of Hanoi work? C

查看:152
本文介绍了如何河内这种迭代塔工作? C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:结果
  <一href=\"http://stackoverflow.com/questions/2209860/how-does-this-work-weird-towers-of-hanoi-solution\">How工作的呢?河内解决方案怪异的塔

您好,
而谷歌冲浪,我发现这个有趣的解决方案,以汉诺塔它甚至没有用到堆栈。任何人都可以解释我简单地说,它是什么实际上在做什么?而这个解决方案真的可以接受吗?

Hello, while surfing google, i found this interesting solution to Tower Of Hanoi which doesn't even use stack. Can anybody explain me in brief, what is it actually doing? And this solution really acceptable?

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int n, x;
   printf( "How many disks? " );
   scanf( "%d", &n );
   printf("\n");
   for (x=1; x < (1 << n); x++)
      printf( "move from tower %i to tower %i.\n",
         (x&x-1)%3, ((x|x-1)+1)%3 );
return 0;
}

更新: - 什么是硬codeD数字3在做这里

推荐答案

可能会更容易伪code看到:

Might be easier to see in PSEUDOCODE:

GET NUMBER OF DISKS AS n
WHILE x BETWEEN 1 INCLUSIVE AND 1 LEFT-SHIFTED BY n BITS
    SUBTRACT 1 FROM n, DIVIDE BY 3 AND TAKE THE REMAINDER AS A
    OR x WITH x-1, ADD 1 TO THAT, DIVIDE BY 3 AND TAKE THE REMAINDER AS B
    PRINT "MOVE FROM TOWER " A " TO TOWER " B
    ADD 1 TO x

1左移n位基本上是2到n,16中的4个磁盘的情况下的权力。

1 LEFT SHIFTED BY n BITS is basically 2 to the power of n, 16 in the case of 4 disks.

这篇关于如何河内这种迭代塔工作? C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆