• Hanoi塔


    1327: Hanoi双塔问题

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 23  解决: 7
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

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

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

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

    任务:An2n个圆盘完成上述任务所需的最少移动次数,对于输入的n,输出An

    输入

    输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。

    输出

    输出文件hanoi.out仅一行,包含一个正整数,为完成上述任务所需的最少移动次数An

    样例输入

    1
    

    样例输出

    2
    

    提示

    对于50%的数据, 1<=n<=25

    对于100% 数据, 1<=n<=200

    设法建立AnAn-1的递推关系式。


    #include<stdio.h>
    #define N 500
    int a[N];
    void pow(int a[N])
    {
        int point=0,i;
        for(i=499;i>=0;i--)
        {
            a[i]=a[i]*2+point;
            if(a[i]>=10)
            {
                a[i]-=10;
                point=1;
            }
            else point=0;
        }
    }
    int main()
    {
        int n,i;
        a[499]=1;
         
        scanf("%d",&n);
        for(i=0;i<=n;i++)
        pow(a);
         
        a[499]-=2;
         
        for(i=0;i<N;i++)
        if(a[i]!=0)
        break;
        for(;i<N;i++)
        printf("%d",a[i]);
     } 

  • 相关阅读:
    C#生成PDF总结
    Oracle删除当前用户下所有的表的方法
    C#操作oracle 到ExecuteNonQuery卡死不执行
    C#中事件的使用
    初探three.js光源
    d3.js 地铁轨道交通项目实战
    初探three.js
    d3.js 绘制北京市地铁线路状况图(部分)
    d3.js 共享交换平台demo
    d3.js 实现烟花鲜果
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003083.html
Copyright © 2020-2023  润新知