zoukankan      html  css  js  c++  java
  • HDU 1996

    Problem Description
    n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列。由于
    发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱
    子从下往上的大小仍保持如下关系 :
    n=m+p+q 
    a1>a2>...>am
    b1>b2>...>bp
    c1>c2>...>cq
    计算所有会产生的系列总数.
     
    Input
    包含多组数据,首先输入T,表示有T组数据.每个数据一行,是盘子的数
    目N<30.
     
    Output
    对于每组数据,输出移动过程中所有会产生的系列总数。
     
    Sample Input
    3 1 3 29
     
    Sample Output
    3 27 68630377364883
     
     
     
    是排列组合问题,直接是3的n次方
    代码如下:
    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        long long int Hanoi[30];
        int i,t,n;
        for(i = 1;i < 30;i ++)
        {
            Hanoi[i] = pow(3,i);
        }
        while(scanf("%d",&t)!=EOF)
        {
            while(t --)
            {
                scanf("%d",&n);
                printf("%I64d
    ",Hanoi[n]);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    bit、byte、word的区别
    JavaScript
    品牌的意义
    Java开发
    Java:关于implements Serializable的警告问题
    文件路径:/和的区别
    Iterator
    parameter和argument的区别
    Java中private、protected、public和default的区别
    Java异常
  • 原文地址:https://www.cnblogs.com/52Cassie/p/4967563.html
Copyright © 2011-2022 走看看