hdu-1207(规律推导)
生活随笔
收集整理的這篇文章主要介紹了
hdu-1207(规律推导)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1207
思路:
可以按照類似漢諾塔的推導形式來推導,
首先,有四個柱子,a,b,c,d。
(1)a的x個盤子借b,d轉移到c上,要F(x)次;
(2)a的n-x個盤子借b轉移到d上(就是普通的漢諾塔)要2^(n-x)-1次;
(3)c的x借a,b轉移到d上需要F(x)次。
所以總共要2*F(x)+2^(n-x)-1次,所以將x從1--n-1遍歷即可。
#include<iostream> #include<cstdio> #include<cmath> using namespace std; const int INF = 99999999; int a[120]; int main(void) {int mi,n,i,j;a[0]=0;a[1]=1;a[2]=3;a[3]=5;for(i=4;i<=64;i++){mi=INF;for(j=1;j<i;j++)mi=mi<(2*a[j]+pow(2,i-j)-1)?mi:(2*a[j]+pow(2,i-j)-1);a[i]=mi;}while(~scanf("%d",&n)){printf("%d\n",a[n]);}return 0; }?
轉載于:https://www.cnblogs.com/2018zxy/p/9943085.html
總結
以上是生活随笔為你收集整理的hdu-1207(规律推导)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】Python操作MongoDB数据
- 下一篇: lombok插件:Data自动get/s