主題:入門必做的題
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根,移動中均保持上小下大的順序,問最少
移幾次方得結果,求出移動方案。