uva 10254——The Priest Mathematician
生活随笔
收集整理的這篇文章主要介紹了
uva 10254——The Priest Mathematician
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題意:漢諾塔題目的變形,有4根柱子,可以把頂部的k個(gè)盤(pán)子移到最后的柱子上,然后按照漢諾塔,問(wèn)最后走的最小步數(shù)。
思路:遞推,經(jīng)過(guò)遞推可以發(fā)現(xiàn)f[n] = f[k]*2+g[n-k],其中f[n]為4個(gè)柱子時(shí)的最小步數(shù),g[n]為3根柱子的最小步數(shù)。要用java大數(shù)來(lái)解決。
code:
import java.math.*; import java.util.Scanner;public class Main {public static void main(String args[]){BigInteger f[] = new BigInteger[10010];f[0] = BigInteger.valueOf(0);f[1] = BigInteger.valueOf(1);int i = 2;int k=1;while(i <= 10000){BigInteger add = BigInteger.valueOf(1).shiftLeft(k);for(int j=0; j<k+1 && i<=10000; ++j){f[i] = f[i-1].add(add);++i;}++k;} Scanner cin = new Scanner(System.in);while(cin.hasNext()){int n = cin.nextInt();System.out.println(f[n]); }} }總結(jié)
以上是生活随笔為你收集整理的uva 10254——The Priest Mathematician的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 子宫腺肌症绝经
- 下一篇: 汇编语言——第2次上机实验