汉诺塔 三 hdu 2064 java ,
来源:互联网 发布:阿里云如何禁止ip访问 编辑:程序博客网 时间:2024/06/05 02:01
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搞定。
阅读全文