?? di3.txt
字號:
┖─┸─┸─┸─┸─┸─┸─┚
移動棋子的條件:
(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)將填充的空格符平均分配在每行中,并保證行的起始和末尾均為單詞。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -