• HDU 1996 汉诺塔VI


    汉诺塔VI

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 1097    Accepted Submission(s): 775


    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
     
    Author
    Zhousc@ECJTU
     
    Source
     
    Recommend
    lcy
     

     1,找规律:列出前幾項便可很容易的發現規律,以此為3,9,27,81

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    
    long long f[30]={1,3,9,27,81};
    
    void Init(){
        for(int i=5;i<30;i++)
            f[i]=3*f[i-1];
    }
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        int t,n;
        scanf("%d",&t);
        Init();
        while(t--){
            scanf("%d",&n);
            cout<<f[n]<<endl;
        }
        return 0;
    }

    2,组合:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    
    const int N=30;
    
    long long c[N][N],sum[N]={0};
    
    void Init(){
        int i,j,k;
        for(i=0;i<N;i++)
            c[i][0]=c[i][i]=1;
        for(i=1;i<N;i++)
            for(j=1;j<i;j++)
                c[i][j]=c[i-1][j]+c[i-1][j-1];
    
        for(k=1;k<N;k++)
            for(i=0;i<=k;i++)
                for(j=0;j<=k-i;j++)
                    sum[k]+=c[k][i]*c[k-i][j];
    }
    
    int main(){
    
        //freopen("input.txt","r",stdin);
    
        int t,n;
        scanf("%d",&t);
        Init();
        while(t--){
            scanf("%d",&n);
            cout<<sum[n]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    240. Search a 2D Matrix II
    436. Find Right Interval
    378. Kth Smallest Element in a Sorted Matrix
    278. First Bad Version
    374. Guess Number Higher or Lower
    207. Course Schedule
    Java enum的用法详解
    Android中RelativeLayout各个属性 android:layout_alignParentLeft=”true”找不到有时候
    android:layout_gravity和android:gravity的区别
    Android 相对布局 扩展
  • 原文地址:https://www.cnblogs.com/jackge/p/3218155.html
Copyright © 2020-2023  润新知