技巧:
递归
思路:
1 把N-1块盘子从A移动到C F(n-1)
2 把最大的移动到B 1
3 把N-1块盘子从C移动到A F(n-1)
4 把最大的移动到C 1
5 把N-1块盘子从A移动到C F(n-1)
F(n) = 3*F(n-1) + 2
实现:
package main
import (
"io"
"os"
"bufio"
"strconv"
. "fmt"
)
func process(n int) int{
if n == 1 {
return 2
}else {
return 3 * process(n - 1) + 2
}
}
// https://ac.nowcoder.com/acm/problem/14585
func NC14585(_r io.Reader, _w io.Writer){
sc, out := bufio.NewScanner(_r), bufio.NewWriter(_w)
defer out.Flush()
for sc.Scan(){
n, _ := strconv.Atoi(sc.Text())
Fprintln(out, process(n))
}
}
func main(){
NC14585(os.Stdin, os.Stdout)
}

京公网安备 11010502036488号