• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACM___________________________

            ______________白白の屋
            posts - 182, comments - 102, trackbacks - 0, articles - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(24)

            隨筆分類(332)

            隨筆檔案(182)

            FRIENDS

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            HDOJ HDU 2077 漢諾塔IV ACM 2077 IN HDU

            Posted on 2010-08-06 15:21 MiYu 閱讀(766) 評論(0)  編輯 收藏 引用 所屬分類: ACM ( 數論 )
            MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋

            題目地址:
                     http://acm.hdu.edu.cn/showproblem.php?pid=2077
            題目描述:
            Problem Description
            還記得漢諾塔III嗎?他的規則是這樣的:不允許直接從最左(右)邊移到最右(左)邊(每次移動一定是移到中間桿或從中間移出),也不允許大盤放到小盤的上面。xhd在想如果我們允許最大的盤子放到最上面會怎么樣呢?(只允許最大的放在最上面)當然最后需要的結果是盤子從小到大排在最右邊。
             

            Input
            輸入數據的第一行是一個數據T,表示有T組數據。
            每組數據有一個正整數n(
            1 <= n <= 20),表示有n個盤子。
             

            Output
            對于每組輸入數據,最少需要的擺放次數。
             

            Sample Input
            2
            1
            10
             

            Sample Output
            2
            19684

            因為最大的可以放在最上面, 所以就不能像 漢諾塔III那樣把前n-1個盤全部從1->3了.
             
            只要把前n-1個盤從1->2,然后把第n個盤1->2->3,然后把前n-1個盤2->3, 這樣就完成了.

            所以,問題現在轉換成 n 個盤移動一步需要多少次.   我們可以看到, 除了最后一個最

            大的盤n以外, 前n-1個盤的移動方式是和 漢諾塔III的規則是一樣的.所以我們先把前
             
            n-2 個盤 1->3, 然后把 第n-1個盤 1->2, 再把前n-2個盤 3->2, 這樣就把前 n-1個盤
             
            1->2 移動了一步.
            因為把 n 個盤 按找漢諾塔III的方法 1->3 需要 3n -1 推導見 :

                                          HDOJ HDU 2064 漢諾塔III ACM 2064 IN HDU

            所以由上面描述的步驟知道把 n 個盤移動一步需要 : f(n) = f(n-1) + ( 3n-1 - 1 ) + 1 = f (n-1) + 3n-1 而 f(1) = 1
            由遞推式化簡得: f(n) = 3n-1 + 3n-2 + ...+ 3 + 1 = ( 3n -1 ) / 2
            所以按 漢諾塔IV的規則, 移動 n 個盤 需要 : m(n) = 2 * f (n-1) + 2 = 3n-1 + 1

            代碼如下:
            MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋

            #include 
            <iostream>
            #include 
            <cmath>
            using namespace std;
            long long myPow ( int n , int e )
            {
                 
            long long mlt = 1;
                 
            for ( int i = 1; i <= e ; ++ i )
                 {
                       mlt 
            *= n; 
                 } 
                 
            return mlt;
            }
            int main ()
            {
                
            int N;
                
            while ( cin >> N )
                {
                      cout 
            << myPow ( 3, N - 1 ) + 1 << endl;
                }
                
            return 0
            }
            久久久免费观成人影院| 久久人人爽人人爽人人片AV麻豆| 2021国内精品久久久久久影院| 久久精品成人一区二区三区| 久久久久亚洲AV成人网人人网站| 理论片午午伦夜理片久久| 久久人人爽人人爽人人AV | 午夜精品久久久久9999高清| 香蕉久久永久视频| 久久精品国产福利国产秒| 久久九色综合九色99伊人| 久久er99热精品一区二区| 久久精品国产精品亚洲| 精品少妇人妻av无码久久| 久久久久久久综合狠狠综合| 国产巨作麻豆欧美亚洲综合久久| 久久精品免费一区二区| 久久一区二区三区99| 欧美伊香蕉久久综合类网站| 久久亚洲国产精品成人AV秋霞| 久久久久国产一级毛片高清版| 无码人妻久久一区二区三区免费丨| 久久99精品国产99久久6| 青青国产成人久久91网| 99久久精品毛片免费播放| 亚洲国产精品无码久久久不卡| 手机看片久久高清国产日韩| 国产亚洲精午夜久久久久久| 国产三级久久久精品麻豆三级| 久久久久久久波多野结衣高潮| 性高朝久久久久久久久久| 久久久久无码国产精品不卡| 91性高湖久久久久| 久久精品中文字幕有码| 久久精品亚洲精品国产欧美| 青青草原综合久久| 久久精品国产精品亚洲下载| 久久久久亚洲?V成人无码| 亚洲精品乱码久久久久久蜜桃| 亚洲一区精品伊人久久伊人| 免费久久人人爽人人爽av|