20180520 -DP1 K - The Priest Mathematician

忙活了一天六级口语,考的还是很凉...今天主要看了这个汉诺塔的题目,题意:

4根柱子的汉诺塔,汉诺塔题目的变形,有4根柱子,可以把顶部的k个盘子移到最后的柱子上,然后按照汉诺塔,问最后走的最小步数。

思路:

一开始看了看以前的汉诺塔问题,递归。而这个汉诺塔问题主要是找规律了,看了好久也没找到,最后看了题解,感觉遇到这种题目,自己很难做出来,还需要加强!

代码:

import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		BigInteger[] f=new BigInteger[10005];
		BigInteger two =new BigInteger("2");
		BigInteger temp= BigInteger.ONE;
		f[0] = BigInteger.ZERO;
		int cnt=0,k=1;
		for(int i=1;i<=10001;i++){
			f[i]=f[i-1].add(temp);
			cnt++;
			if(cnt==k) {
				cnt=0;
				k++;
				temp=temp.multiply(two);
			}
		}
		while(in.hasNext()) {
			int n=in.nextInt();
			System.out.println(f[n]);
		}
		in.close();
	}
}
地址: 点击打开链接

猜你喜欢

转载自blog.csdn.net/sinat_37668729/article/details/80384935
今日推荐