zoukankan      html  css  js  c++  java
  • 双色汉诺塔

    双色汉诺塔其实和单色汉诺塔是一样的。具体为什么我也不知道。

    汉诺塔这个东西我以前看过一篇文章

    大概就是说,n个片移动最少次数一定是2的n次方减一。具体移动方法是:

    ①先把最小的1片按顺时针(或逆时针,但是一旦确定就不可以改变)移动到下一个棒子上

    ②再移动除了最小的1片之外唯一可以移动的片到可移动的位置上。

    对,就这么简单。大家可以闲的没事玩一玩,反正有一天我玩了好长时间。

    顺便说一句移动64个片要非常长的时间,如果移动1次64个片算一年的话那么紫妈就17asdfalsdfkjsdlkfjlksdjflkdsjfkljsldkfjldksjflkdsjflksa

    咳咳……不过这个题啊不用知道那么多,递归就可以了

    要想把n片从a棒移动到b棒,只要三步:

    ①把n-1片从a棒移到c棒

    ②把第n片从a棒移到b棒

    ③把n-1片从c棒移到b棒

    于是代码就香喷喷的出炉了

     1 #include<cstdio>
     2 using namespace std;
     3 void move(int n,char a,char b,char c)
     4 {
     5     if(n > 1){
     6         move(n - 1,a,c,b);    //第一步 
     7         printf("%d %c %c
    ",n,a,b);    //第二步 
     8         move(n - 1,c,b,a);    //第三步 
     9     }
    10     else{
    11         printf("%d %c %c
    ",n,a,b);
    12         return;
    13     }
    14 }
    15 int main()
    16 {
    17     freopen("twohanoi.in","r",stdin);
    18     freopen("twohanoi.out","w",stdout);
    19     int n;
    20     scanf("%d",&n);
    21     move(n,'A','B','C');
    22     return 0;
    23 }

    破题不能东方化好烦啊

  • 相关阅读:
    使用Kmeans进行聚类,用calinski_harabaz_score评价聚类效果
    使用Autoencoder进行降维
    MongoDB 之 MongoDB简介与安装 MongoDB 1
    我的淘宝客之路 起步
    Excel批量导入Orale
    CAB压缩包文件制作
    策略模式
    设计OA系统的用户角色权限分配
    java语言中的限定词
    jQuery LigerUI使用培训
  • 原文地址:https://www.cnblogs.com/aristocrat/p/8469490.html
Copyright © 2011-2022 走看看