忙活了一天六级口语,考的还是很凉...今天主要看了这个汉诺塔的题目,题意:
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();
}
}
地址:
点击打开链接