博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hanoi双塔问题(简单的枚举)
阅读量:4348 次
发布时间:2019-06-07

本文共 678 字,大约阅读时间需要 2 分钟。

给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求: 

 

(1)每次只能移动一个圆盘;

(2)A、B、C三根细柱上的圆盘都要保持上小下大的顺序; 

a[n]=a[n-1]*2+2;

void dfs(int k)

{

         if(k==1)

         {

                   ans+=2;

         }

         dfs(k-1);

         ans+=2;

         dfs(k-1);

}

dfs的公式

本题后面会爆,要打高精

#include<bits/stdc++.h>

using namespace std;

int n;

int a[201][200];

int main()

{

    cin>>n;

    a[1][1]=2;a[1][0]=1;

    for(int i=2;i<=n;i++)

    {

             a[i][0]=a[i-1][0];

             for(int j=1;j<=a[i][0];j++)

             {

                       a[i][j]+=a[i-1][j]*2;

                       if(j==1)

                       a[i][j]+=2;

                       a[i][j+1]=a[i][j]/10;a[i][j]%=10;

                       if(a[i][j+1]!=0&&j+1>a[i][0])

                       {

                                a[i][0]++;

                       }

             }

    }

    for(int i=a[n][0];i>=1;i--)

    {

             cout<<a[n][i];

    }

}

转载于:https://www.cnblogs.com/fanhao050109/p/10957212.html

你可能感兴趣的文章
Android设计模式系列-单例模式
查看>>
hiho一下 第一百零七周 Give My Text Back(微软笔试题)
查看>>
常用正则表达式
查看>>
6.2.7 Math对象的使用
查看>>
Windows server 2008 R2配置多个远程连接的教程
查看>>
PHP 重置数组为连续数字索引的几种方式
查看>>
南阳理工acm 88-汉诺塔(一)
查看>>
160809308周子济第六次作业
查看>>
大型Web应用运行时 PHP负载均衡指南
查看>>
为phpStorm 配置PHP_CodeSniffer自动检查代码
查看>>
测试工具网址大全(转)
查看>>
ServiceStack DotNet Core前期准备
查看>>
webpack中‘vant’全局引入和按需引入【vue-cli】
查看>>
Date、String和Timestamp类型转换
查看>>
计算机的组成
查看>>
CSS命名规范
查看>>
初始化构造函数中定义的实体集合,方便嵌套类型的遍历
查看>>
状压dpHDU - 4856
查看>>
java.nio.ByteBuffer 类 缓冲区
查看>>
PL/SQL系列1-PL/SQL介绍
查看>>