hdu 2077 汉诺塔IV(java && c)

来源:互联网 发布:网页设计软件排名 编辑:程序博客网 时间:2024/04/29 16:16

汉诺塔IV

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5187    Accepted Submission(s): 3750


Problem Description
还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果是盘子从小到大排在最右边。
 

Input
输入数据的第一行是一个数据T,表示有T组数据。
每组数据有一个正整数n(1 <= n <= 20),表示有n个盘子。
 

Output
对于每组输入数据,最少需要的摆放次数。
 

Sample Input
2110
 

Sample Output
219684
 

Author

xhd

递推

#include<stdio.h>__int64 f(int n){__int64 ans = 1;for(int i = 1; i < n; i++)ans *= 3;return ans;}int main(){int t,n;scanf("%d", &t);while(t --){scanf("%d", &n);__int64 ans = f(n);printf("%I64d\n", ans+1);}return 0;} 
java版

import java.util.Scanner;public class Main {int t,n,ans;public int slove(Main x){for(int i = 1; i < x.n; i++)x.ans *= 3;return x.ans;}public static void main(String[] args){Scanner in = new Scanner(System.in);Main x = new Main();x.t = in.nextInt();while(x.t > 0){x.ans = 1;x.t --;x.n = in.nextInt();System.out.println(x.slove(x)+1);}}}



0 0
原创粉丝点击