入門必做題目

主題:入門必做的題

1.  給定等式其中每個字母代表一個數字,且不同數字對應不同字母。編程求出這些數字並且打出這個數字的 算術計算豎式。
       A B C D E       
       D F G    
+     D F G    
───────
       X Y Z D E

 

  2. A、B、C、D、E五名學生有可能參加計算機競賽,根據下列條件判斷哪些
  人蔘加了競賽:

   (1)A參加時,B也參加;

   (2)B和C只有一個人參加;

   (3)C和D或者都參加,或者都不參加;

   (4)D和E中至少有一個人參加;

   (5)如果E參加,那麼A和D也都參加。

 

  3. 打印一個 N*N 的方陣,N爲每邊           N=15  打印出下面圖形
 字符的個數(3<N<20), 要求最               TTTTTTTTTTTTTTT
 外一層爲"T", 第二層爲"J", 從第三層               TJJJJJJJJJJJJJT
 起每層依次打印數字 1,2,3,...                     TJ11111111111JT
 (右圖以N爲15爲例)                           TJ12222222221JT
                                                  TJ12333333321JT
                                                  TJ12344444321JT
                                                  TJ12345554321JT
                                                  TJ12345654321JT
                                                  TJ12345554321JT
                                                  TJ12344444321JT
                                                  TJ12333333321JT
                                                  TJ12222222221JT
                                                  TJ11111111111JT
                                                  TJJJJJJJJJJJJJT
                                                  TTTTTTTTTTTTTTT

 

  4. 在N行N列的數陣中, 數K(1〈=K〈=N)在每行和每列中出現且僅
  出現一次,這樣的數陣叫N階拉丁方陣。例如下圖就是一個五階拉丁方陣。
  編一程序,從鍵盤輸入N值後,打印出所有不同的N階拉丁方陣,並統計個數。

        1  2  3  4  5
        2  3  4  5  1
        3  4  5  1  2
        4  5  1  2  3
        5  1  2  3  4


  5. 輸入一個十進數,將其轉換成 N 進制數(0<N<=16)。

6. 矩陣中填數. 當給出 N*N 的矩陣,要求用程序填入下列形式的數:

   ① 倒填,例如N=5             ② 蛇形填數              ③ 迴轉填數

 ┌─┬─┬─┬─┬─┐   ┌─┬─┬─┬─┬─┐   ┌─┬─┬─┬─┬─┐
 │25│24│23│22│21│   │ 1│ 3│ 4│10│11│   │ 1│16│15│14│13│
 ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤
 │20│19│18│17│16│   │ 2│ 5│ 9│12│19│   │ 2│17│24│23│12│
 ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤
 │15│14│13│12│11│   │ 6│ 8│13│18│20│   │ 3│18│25│22│11│
 ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤
 │10│ 9│ 8│ 7│ 6│   │ 7│14│17│21│24│   │ 4│19│20│21│10│
 ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤   ├─┼─┼─┼─┼─┤
 │ 5│ 4│ 3│ 2│ 1│   │15│16│22│23│25│   │ 5│ 6│ 7│ 8│ 9│
 └─┴─┴─┴─┴─┘   └─┴─┴─┴─┴─┘   └─┴─┴─┴─┴─┘


  7. 讀入一行文本,包含若干個單詞(以空格間隔,%結尾)。將其中以 A 開頭的
  單詞與以 N 結尾的單詞,用頭尾交換的辦法予以置換。

 

  8. 輸入兩個正整數X,Y,將X,Y化爲二進制數,然後將這兩個二進制數作二進
  制加法運算,再將結果化爲十進制數輸出。

 

  9. 四人玩火柴棍遊戲,每一次都是三個人贏,一個人輸。輸的人要按贏者手中的火柴
  數進行賠償,即贏者手中有多少根火柴棍,輸者就賠償多少根。現知道玩過四次後,
  每人恰好輸過一次, 而且每人手中都正好有16根火柴。問此四人做遊戲前手中各有
  多少根火柴? 編程解決此問題。

 

 10. 如圖1所示,編寫程序計算               ┎┰┰┰┰┰┰┰┰┰┒
    大大小小正方形共有多少?當最小          ┠╂╂╂╂╂╂╂╂╂┨
    正方行邊長爲1時,它們的總面積          ┠╂╂╂╂╂╂╂╂╂┨
    共爲多少?                              ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┠╂╂╂╂╂╂╂╂╂┨
                                            ┖┸┸┸┸┸┸┸┸┸┚
11. 巧排數字。將1、2、...、20這20個數排成一排,使得相鄰的兩個數之
  和爲一個素數,且首尾兩數字之和也爲一個素數。編程打印出所有的排法。

 

 12. 下圖是一個集裝箱倉庫,陰影部分表示有集裝箱存放不能通過,無陰影處爲臨時通
 道。當有人要從入口處到達出口處時,必須尋找可通過路線,請你找出可完成這個過程
 的最方便(即用最短路線)到達出口處的路徑。

          ┎┰┰┰入口┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┰┒
          ┠╂╂╂──╂╂╂╂┸┸╂┸┸╂┸┸╂┸┸╂╂╂╂┸┸╂╂╂┨
          ┠╂╂╂──╂┸┸╂──╂┰┰╂┰┰╂──╂╂╂╂──╂╂╂┨
          ┠╂╂╂──╂┰┰╂┰┰╂╂╂╂╂╂╂──╂┸┸╂──╂╂╂┨
          ┠╂╂╂──╂╂╂╂╂╂╂╂╂╂╂╂╂┰┰╂┰┰╂┰┰╂╂╂┨
          ┠╂╂╂──╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂┸┸╂╂╂┨
          ┠╂╂╂──╂┰┰╂┰┰╂┰┰╂──╂┰┰╂──╂┰┰╂╂╂┨
          ┠╂╂╂──╂╂╂╂╂╂╂╂╂╂──╂╂╂╂──╂╂╂╂╂╂┨
          ┠╂╂╂──╂╂╂╂┸┸╂┸┸╂──╂╂╂╂──╂┸┸╂╂╂┨
          ┠╂╂╂──╂╂╂╂┰┰╂┰┰╂┰┰╂╂╂╂┰┰╂──╂╂╂┨
          ┖┸┸┸──┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸┸出口┸┸┸┚


 13. 有N個硬幣(N爲偶數)正面朝上排成一排,每次將 N-1 個硬幣翻過來放在原位
 置, 不斷地重複上述過程,直到最後全部硬幣翻成反面朝上爲止。編程讓計算機把
 翻幣的最簡過程及翻幣次數打印出來(用*代表正面,O 代表反面)。

 

 14. 有黑白棋子各有N個(分別用*和O代替),按下圖方式排列

        ***...***OOO...OOO

            N個黑棋            N個白棋

 允許將相鄰兩個棋子互換位置,最後使隊形成黑白交替排列,試編程實現該操作。

 

 15. 已知6個城市,用c[i,j]表示從i城市到城市j是否有單向的直達汽車

 (1=<i〈=6,1〈=j〈=6), c[i,j]=1 表示城市i到城市j有單向直達汽
 車; 否則 c[i,j]=0.  試編制程序,對於給出的城市代號i,打印出從該城市出
 發乘車(包括轉車)可以到達的所有城市。

16. 設有8枚硬幣a,b,c,d,e,f,g,h,其中有一枚硬幣是僞造的。
 真僞硬幣的區別僅是重量不同,可能重,可能輕。今要求以天平爲工具,用最少的
 比較次數挑出僞造硬幣,並鑑定它是重還是輕。

 

 17. 編寫一個程序,當輸入不超過60個字符組成的英文文字時,計算機將這個句子
 中的字母按英文字典字母順序重新排列,排列後的單詞的長度要與原始句子中的長度
 相同。例如:

    輸入:

    THE PRICE OFBREAD IS ¥1 25 PER POUND

    輸出:

    ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU

 並且要求只對A到Z的字母重新排列,其它字符保持原來的狀態。

 

 18. 在一線性七個格位置的圖上有兩種不同顏色的棋子A,B. 排列如下圖所示,中間
 格的位置爲空。

          ┎─┰─┰─┰─┰─┰─┰─┒
          ┃A┃A┃A┃  ┃B┃B┃B┃
          ┖─┸─┸─┸─┸─┸─┸─┚

 要求將A,B的現行位置交換,形成下圖中的排列:

          ┎─┰─┰─┰─┰─┰─┰─┒
          ┃B┃B┃B┃  ┃A┃A┃A┃
          ┖─┸─┸─┸─┸─┸─┸─┚

 移動棋子的條件:

   (1) 每個格中只准放一個棋子。
   (2) 任意一個棋子均可移動一格放入空格內。
   (3) 一方的棋子均可跳過另一方的一個棋子進入空格。
   (4) 任何棋子不得跳躍兩個或兩個以上棋子(無論顏色同異)
   (5) 任何一個顏色棋子只能向前跳,不準向後跳。

 編程完成有關的移動,並且完成具有2N+1個格子的情形. 其中兩種顏色各有
 N個棋子,且中間爲空格.

 

 19. (揹包問題) 有 N 件物品 d1,......dN,每件物品重量爲 W1,..., WN
 (Wi > 0), 每件物品價值爲 V1,......VN (Vi>0)。用這N件物品的某個子集
 填空揹包,使得所取物品的總重量<=TOTAL,並設法使得揹包中物品的價值儘可
 能高。

 

 20. (N皇后) 在國際象棋的棋盤上放置N個皇后,使其不能互相攻擊,即任意
 兩個皇后不能處在棋盤的同一行,同一列,同一斜線上,試問共有多少種擺法?

21. 請設計一個程序,由計算機把1.. ̄.8的八個自然數填入圖中,使得橫、
 豎、對角任何兩個相鄰的小方格中的兩個數是不連續的。(下圖右側的 4 個圖
 爲禁止的情形).

            ┌─┐          ┌─┐               ┌─┐
            │  │          │4│               │8│
        ┌─┼─┼─┐      └─┼─┐       ┌─┼─┘
        │  │  │  │          │5│       │7│
        ├─┼─┼─┤          └─┘       └─┘
        │  │  │  │      ┌─┐
        └─┼─┼─┘      │6│           ┌─┬─┐
            │  │          ├─┤           │1│2│
            └─┘          │7│           └─┴─┘
                            └─┘

 

 22. 在一個4*4的小方格(如圖所示)中放置8個*號,使得每行每列放且
 僅放兩個*號。

          ┌─┬─┬─┬─┐
          │*│*│  │  │
          ├─┼─┼─┼─┤
          │*│  │*│  │
          ├─┼─┼─┼─┤
          │  │*│  │*│
          ├─┼─┼─┼─┤
          │  │  │*│*│
          └─┴─┴─┴─┘

 求出所有的基本解。

 

 23. (覆蓋問題) 有邊長爲N(N爲偶數)的正方形,請你用N^2/2個長爲2,
 寬爲1的長方形,將它全部覆蓋。編程打印出所有覆蓋方法。如:N=4

    ┌─┬──┬─┐            ┌──┬──┐
    │  │    │  │ 1224   │    │    │  1122
    │  ├──┤  │            ├──┼──┤
    │  │    │  │ 1334   │    │    │  3344
    ├─┼──┼─┤            ├──┼──┤
    │  │    │  │ 5668   │    │    │  5566
    │  ├──┤  │            ├──┼──┤
    │  │    │  │ 5778   │    │    │  7788
    └─┴──┴─┘            └──┴──┘

 

 24. 某地街道把城市分割成矩形方格,每一方格叫作塊,某人從家中出發上班,
 向東要走M塊,向北要走N塊,(見圖)。請設計一個程序,由計算機尋找並
 打印出所有的上班的路徑。

                                               單位

           ┬   ┌─┬─┬─┬─┬─┬─┬─┐
           │   │  │  │  │  │  │  │  │
           │   ├─┼─┼─┼─┼─┼─┼─┤
           ↓   │  │  │  │  │  │  │  │
           N   ├─┼─┼─┼─┼─┼─┼─┤
           ↑   │  │  │  │  │  │  │  │
           │   ├─┼─┼─┼─┼─┼─┼─┤
           │   │  │  │  │  │  │  │  │
           ┴   └─┴─┴─┴─┴─┴─┴─┘
           家   ├─────→M←─────┤

 

 

 25. (量水) 用存水爲M,N升的兩個罐子,量出A升水。

26. (八數碼問題) 8個編有數碼1 ̄8的滑牌,能在3*3的井字格中滑動。
 井字格中有一格是空格,用0表示,因而空格周圍的數碼滑牌都可能滑到空格中去.

 下圖是數碼滑牌在井字格中的兩種狀態:

         ┎─┬─┬─┒                        ┏━┯━┯━┓
         ┃2 │8 │3 ┃                        ┃1 │2 │3 ┃
         ┠─┼─┼─┨                        ┠─┼─┼─┨
         ┃1 │6 │4 ┃     ---->         ┃8 │0 │4 ┃
         ┠─┼─┼─┨                        ┠─┼─┼─┨
         ┃7 │0 │5 ┃                        ┃7 │6 │5 ┃
         ┗━┷━┷━┛                        ┗━┷━┷━┛

            初始狀態                              目標狀態

 以左圖爲初始狀態,右圖爲目標狀態,請找出從初始狀態到目標狀態的滑牌移步
 序列,具體要求:

    (1)輸入初始狀態和目標狀態的數據;
       a、分別用兩行輸入上述兩項數據:
         例:Enter the initial state:2 8 3 1 6 4 7 0 5
             Enter the final state:1 2 3 8 0 4 7 6 5
       b、對輸入數據應有查錯和示錯功能;
    (2)實現從初始狀態到目標狀態的轉換(如不能實現,程序應輸出不能實現
    的提示信息);
    (3)輸出結果,每移動一步都必須在屏幕上顯示:
       a、移動每一步時的序號,最後一步的序號即爲移動總步數;
       b、每一步移動後以3*3表格形式顯示狀態。
    (4)要求能使移動步數儘可能少;


 27. 給出一個有8個格子的表格,除3個格子外,每個格子中可放入一個數字,這
 些數字取自自然數 1 到 5,放入格子中的數字不得相同,剩餘的3個格子是空格
 (用O表示)。圖1是一個放數字與空格的特例。現要求編程實現從初始表格狀態
 變化到目標表格狀態。初始狀態和目標狀態都是可變的(圖1,圖2所示的狀態僅
 是一個特例),由鍵盤輸入格子中的數字(0 ̄5)。

    移動規則:

   (1) 每一個數字只可以通過虛線移入相鄰空格。如圖1中,允許“2”左移入空
   格,而不能上移進入上面空格。
   (2) 只允許水平移動或垂直移動,不允許斜移。
   (3) 移動後,該數字原先所在的格子變成空格。

    實現目標:

   (1) 輸入初始表格狀態和目標表格狀態的數據。
     ① 分別在一行內輸入上述兩項數據;
     ② 對輸入的數據應有查錯和報錯功能;
   (2) 實現從初始狀態到目標狀態的轉換(如不能實現也應給出必要的說明)。
   (3) 顯示結果:每移動一步都應在屏幕上有如下信息:
     ① 顯示每一步移動的序號。所以最後一步的序號就是移動的總步數。
     ② 顯示每一步移動前後的表格狀態。
   (4) 以最少的移動步數達到目標。

              ┎─┰─┰─┒                          ┎─┰─┰─┒
              ┃3┃4┃0┃                          ┃0┃0┃0┃
          ┎─╂─╂  ╂─╂─┒                  ┎─╂─╂  ╂─╂─┒
          ┃0  1  0  2  5┃                  ┃1  2  3  4  5┃
          ┖─┸─┸─┸─┸─┚                  ┖─┸─┸─┸─┸─┚

                圖 10-1                             圖 10-2

                初始狀態A                              目標狀態B

 

 28. n枚銀幣 C1,C2,...,Cn, 其中有一塊不合格,不合格的銀幣比正常的要重。現用
 一天平找出不合格的一塊,要求在最壞的情況下,用的天平次數最少。

 

 29. 把一段文章按要求排版。文章的輸入方式爲:由鍵盤輸入一段以回車符結束的文章
 (最大長度 2000 個字符)。排版時以單詞爲基本單位。單詞由不含空格的任意字符組
 成,是長度小於20個字符的串。空格符是分隔單詞的唯一字符,在輸入時連續的空格
 符在處理時應先化簡爲單個空格符。在排版前應先輸入,排版後每行的字符數爲N,排
 版後將整理好的文章按行輸出。輸出時不能將一個完整的單詞截斷,並要求輸出的總行
 數最小。將每個不足N個字符的行用空格補足,填充空格符的方式有以下三種。

    1)將填充的空格符置於每行的末尾,並要求每行的起始爲單詞。
    2)將填充的空格符置於每行的開始,並要求每行的末尾爲單詞。
    3)將填充的空格符平均分配在每行中,並保證行的起始和末尾均爲單詞。

 

 30. 某機要部門安裝了電子鎖。M個工作人員每人發一張磁卡,卡上有開鎖的密碼特徵。

 爲了確保安全,規定至少要有N個人同時使用各自的磁卡才能將鎖打開。問電子鎖上至
 少要有多少種特徵? 每個人的磁卡上至少要有多少特徵? 如果特徵的編號以小寫英文字
 母表示,將每個人的磁卡的特徵編號打印出來,要求輸出的電子鎖的總特徵數最少。

    設 3<=M<=7, 1<=N<=4, M與N由鍵盤輸入,工作人員編號用 1#,2#,...表示.

31. 甲乙兩人從24枚棋子中輪流取子,甲先取,規定每次所取的枚數不能多於上
 一個人所取的枚數,也不可不取。

  (1)甲第一次取多少枚才能保證甲取得最後一枚,當然,他也不能第一次就把
 所有棋子都取走。
  (2)討論棋子總數N(一定是偶數)從6到30的各種情況。討論內容包括:

 對各個N,是否存在一個小於N的枚數M,甲第一次取M枚後就能保證甲如果策略
 正確,一定能取到最後一枚棋子。


 32. ( 走棋 ) 一個4*4的方陣如圖。有一個小卒從上往下走。走至格子1後就
 不能走動,走至0後,若下方爲1,則向左或向右走,下方爲0,則向下走。求所
 有走法。

              ┌─┬─┬─┬─┐
              │1 │0 │0 │0 │
              ├─┼─┼─┼─┤
              │0 │0 │1 │0 │
              ├─┼─┼─┼─┤
              │0 │1 │0 │0 │
              ├─┼─┼─┼─┤
              │1 │0 │0 │0 │
              └─┴─┴─┴─┘


 33. ( 野人與傳教士 ) 設有三個傳教士和三個野人來到河邊,打算乘一隻船從右
 岸渡到左岸去。該船最大負載能力爲兩人,在任何時候,如果野人人數超過傳教士
 人數,那麼野人就會把傳教士吃掉。他們怎樣才能用這條船安全地把所有人都渡過
 河去呢?

 

 34. ( 取棋子 ) 設有N顆棋子,由人和計算機輪流從中取走若干顆。每方每次最
 多取K顆,最少取1顆 (K值不能超過總數的一半,也不能小於1)。試編寫一程
 序使計算機有較多的獲勝機會。

    屏幕輸入提示:

    (1) 輸入競賽規則:A. 取最後一顆棋子的那一方爲敗.
                      B. 取最後一顆棋子的那一方爲勝.
    (2) 總共有多少顆棋子?
    (3) 一次最多取幾顆?
    (4) 誰先取?
    (5) 每個回合都應顯示: A. 你取幾顆?
                          B. 我取走......顆,還剩......顆.
    (6) 競賽過程中發生違例時,打印出:  競賽無法進行下去!
    (7) 競賽結束後打印:
    I win!(我勝!)或  You win!(你勝!)。

 35. ( Grundy博弈 ) 在兩位選手面前放着一堆銅幣。第一位選手把原堆分成不相
 等的兩堆。然後每個選手輪流地這樣做,即當輪到某一方分時, 他把已被分開的任
 一堆再分成不相等的兩堆。博弈這樣一直進行下去,直到每一堆都只剩下一個或兩
 個銅幣爲止,這時博弈結束。規定首先遇到這種情況的選手爲輸。

36. 猴子選大王:
   ① N 只猴子站成一行,每隔 M 只從頭到尾報數,反覆進行,報過數的退出,打
 印每次退出的猴子的編號,直到剩下一隻爲止。
   ② N 只猴子站成一行,每 M 只報數。先從頭到尾,報到尾後,再返回從尾到頭
 報數,打印每次方向及過程,直到剩下二隻時,以排到後面的(指報數方向)爲大王。
   ③ N 只猴子圍成一圈,從第 P 個開始,每隔 M 只報數,打印每次過程,只剩下
 一個時爲大王。

 

 37. 已知 N 個正整數滿足 K1+K2+...+Kn=M。求一組最佳的分解,使得
 K1*K2*....*Kn 爲最大。
   例如:N=2時,給定 K1+K2=6,當 K1=3,K2=3 時,K1*K2=9 爲最大


 38. 有一集合中有 N 個元素,每個元素均爲自然數。給定一個 total (假設每個
 元素值均小於total),求滿足條件的所有子集,子集中各元素之和應等於total。

 39. 一個集合滿足如下條件:
   (1)1是集合的元素;
   (2) 若 P 是集合的元素,則 2*P+1,4*P+5 也是集合的元素。
 求:此集合中最小的 K 個元素。
  ③ 對ABC作全排列而得的六個三位數之和爲 2886。

 

 40. 一個整型變量只能用來存貯較小的 N!的值,當 N 較大時,可將階乘值中的
 每一個數字放在一個一維數組的一個元素中。使用這方法,打印:
    ① N!的值;
    ② N!-M!(M>N);
    ③ N!+M!

41. (合併鏈表) 已知兩個鏈表 AN={a1,a2,...an}, BN={b1,b2,...bm}, 將其合併
 爲一個鏈表 CN={a1,b1,a2,b2,...}

 

 42. (算術表達式求值) 輸入一個由數字、+,-,*,/ 及括號組成的算術表達式,
 求其值。

 

 43. 對於次數很高,但項目很少的多項式,可用鏈表來表示。
  例如:X^1000-76*X^76+3*X^3-7可表示爲

  ┌─┬──┬─┐  ┌──┬─┬─┐   ┌─┬─┬─┐  ┌─┬─┬──┐
  │1 │1000│  ┼→│-76 │78│  ┼→ │3 │3 │  ┼→│-7│0 │ NIL│
  └─┴──┴─┘  └──┴─┴─┘   └─┴─┴─┘  └─┴─┴──┘

 在此方式下,編程完成兩個多項式的加法與乘法。

 

 44. (一元多項式加法) 實現兩個整係數一元多項式的加法。例如, 對於多項式
 5*X^6+4*X^3-7*X^4+1 與多項式 50*X^2+4*X, 運算結果爲:
 5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。

   程序要求:鍵盤輸入多項式的各項係數及指數,每項係數及指數爲一組數據(系
 數及指數之一可爲零),以'0,0'結束一個多項式的輸入,結果按降冪排列,同類
 項要合併(指數最大不超過30)。

   上例第一式的輸入爲:    5,6
                           4,3
                          -7,4
                           1,0
                           0,0
  輸出結果應爲:5*x^6-7*x^4+4*x^3+50*x^2+4*x+1.


 45. (數列的最小代價) 給定一個正整數序列,例如:4,1,2,3, 不改變數的位置把
 它們相加, 並且由括號來標記每一次加法所得到的和。例如:((4+1)+(2+3))=
 ((5)+(5))=10. 除去原數4、1、2、3之外,其餘都爲中間結果,如:5,5,10, 將中
 間結果相加,得到:5+5+10=20, 數 20 稱爲此數列的一個代價。對於另一種算法:
 (4+((1+2)+3))=(4+((3+3))=(4+(6))=10, 得到數列的另一個代價爲:3+6+10=19.
 若給出 N 個數的數列,求出此數列的最小代價。

46. 設有一個字符串,長度小於 100,且全部以英文字母組成。對字串中的每個字
 母可用 0,1,2 三個數字進行編碼,且數字可以重複使用。
 程序要求:(1) 輸入字符串,並能判斷輸入是否有錯;
           (2) 輸出對應的編碼表及碼長,要求字串的編碼總長度爲最短;
           (3) 根據上述編碼表,給出一些編碼,然後求出其原字符串。
 例如:輸入的字符爲:ABCBAAADDEF
     其對應的編碼表爲:
         A:   2                B:  10
         C:  11                D:  12
         E:  00                F:  O1
 對應的編碼爲:210111022212120001       總碼長爲:18
 根據該編碼,給出編碼:010001121110222   則輸出字串:FEFDCBAAAA.

 47. 某些密碼由 N 個英文字母組成(N〈26), 每個字母的平均使用率爲:W1,W2,...
 ,Wn, 要求編程完成下列任務:
    ① 鍵入英文字母及個數;
    ② 鍵入N個英文字母的使用頻率;
    ③ 用二進制數對該N個英文字母進行編碼(最短,無二義性);
    ④ 鍵入字母短文(單詞用空格區分),輸出相應編碼;
    ⑤ 鍵入二進制編碼短文,輸出譯文。

 48. 將4個紅球,3個白球與3個黃球排成一排,共有多少種排法?

 49. 有面值爲 M..N 的郵票各一枚,共能拼出多少不同的面額。

 50. 有一個四階方陣,隨機產生 1..16 這 16 個自然數(不重複),依次填入每
 個方格中。要求用最少的對調次數,使每一行、每一列以及對角線上的四個數之和
 均相等。打印每一次對調的過程。

 51. 微型藍球賽. 甲,乙兩隊進行藍球比賽,結果甲隊以S:T 獲勝.(T<S<=10, S,T
 由鍵盤輸入). 比賽中, 甲隊得分始終領先(嚴格大於乙隊). 規定以任何方式進一
 球都只得一分. 編程序打印該比賽的每一種可能的不同的得分過程, 以及所有不同
 過程的總數.

52. 求兩整型數組錯位相加的最大面積.
    設整型數組 C 具有 N 個分量: C=(C1,C2,...,CN), 兩相連分量(C[I],C[I+1])
 可計算一個面積: 若C[I],C[I+1]同號, 則面積 SI=abs(C[I]+C[I+1])/2, 否則,面
 積等於 (abs(a*C[I])+abs(b*C[I+1]))/2, 其中, a>0,b>0,a+b=1 (詳見下圖),數
 組 C 的面積 A=S[1]+S[2]+...+S[N-1].
     編程要求如下:
  從鍵盤輸入 N, 再輸入兩個具有 N 個分量的數組: A1,A2:ARRAY [1..N] OF
 INTEGER; 將 A1,A2 錯位相加(詳見後面的例子)得數組A3, 求 A3 的面積.編程給
 出一個錯位相加的方案, 使 A3 的面積最大.
    例: 設 N=3, A1=(3,7,2), A2=(-5,7,-4), 則應考慮 9 種情況:
                    (1)                         (2)
        A1  3  7  2                       3  7  2
        A2              -5  7  -4                  -5  7  -4
        A3  3  7  2  0  -5  7  -4         3  7  2  -5  7  -4
                    (3)                         (9)
        A1  3  7  2                                     3  7  2
        A2       -5  7 -4       ......     -5  7  -4
        A3  3  7 -3  7 -4                  -5  7  -4  0 3  7  2

 53. (工作安排問題) 現有 N (N≤8) 件工作, 分別由 N 個人完成, 每人都完成一
 件,且只完成一件, 每人完成不同工作的時間不同. 試設計一種分配工作方案, 使
 完成 N 件工作所需的總時間最少.
    原始數據由文本文件 EXAM1.TXT 給出, 其格式如下:
    第 1 行:        工作任務數(N)
    第 2 -- N+1 行: 第 i+1 行爲第 i 個人完成各件工作所需的時間. 以上各數
 均爲不超過 1000 的正整數.
    計算結果可直接在屏幕上輸出: 第一行爲工作分配方案, 共 N 組, 每組數據的
 形式爲 a-b, 其中 a 爲工作人員編號, b 爲他應完成的工作序號.
    例: 設 EXAM1.TXT 的數據爲:
         4
         2  15  13  4
         10  4  14  15
         9  14  16  13
         7  8  11  9
     對此, 一個正確的輸出可以是
         1-4, 2-2, 3-1, 4-3
         TOTAL=28

 54. 求N個字符串的最長公共子串,N<=20,字符串長度不超過255。
    例如:N=3,由鍵盤依次輸入三個字符串爲
      What is local bus ?
      Name some local buses.
      local bus is a high speed I/O bus close to the processer.
 則最長公共子串爲"local bus"。
 ( 參看程序 9 )

 55. (液晶顯示) 下圖是用液晶七筆阿拉數字表示的十個數字,我們把橫和豎的一
 個短劃都稱爲一筆,即7有3筆,8有7筆等。請把這十個數字重新排列,要做到
 兩相鄰數字都可以由另一個數字加上幾筆或減去幾筆組成,但不能又加又減。比如
 7→3是允許的,7→2不允許。編程打印出所有可能的排列。
    如:4107395682。

 56. (N階梵塔) 有K根棒,第一根上放N片大小不等的圓盤,並保持上小下大的
 順序。現將N片圓盤從第1根移至第K根,移動中均保持上小下大的順序,問最少
 移幾次方得結果,求出移動方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章