汉诺塔 三 hdu 2064 java ,

import java.util.Arrays;
import java.util.Scanner;  
import java.math.*;
public class Nyoj14{  
	public static BigInteger f(int n)
	{
		if( n == 1)
		{
			return BigInteger.valueOf(2);
		}
		
		else 
		{
			BigInteger ss = BigInteger.valueOf(3);
			
			BigInteger nn = BigInteger.valueOf(2);
			BigInteger e = f(n-1).multiply(ss).add(nn);
			return e;
		}
	}
  public static void main(String[] args){  
	  
      Scanner cin=new Scanner(System.in);  
     int k,m,n;
     while(cin.hasNext()) {
    	 k = cin.nextInt();
    	 
    	 BigInteger ans = f(k);
    	 System.out.println(ans);
     }
  }
}
    	 

假设有n个第n-1个abc
 第n个
ab 
 第n-1个 cba
 第n个bc 
 第n-1个abc
     
     
     

由图可以知道,第n 个如果要是从A到C,需要自己移动两步,然后需要第n-1个a-b-c,然后c-b-a,然后a-b-c。所以得到递推公式: f(n) = 3*f(n-1)+2;高中的通项公式。得到an = 3^n-1搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值