印制电路板将布线区域划分成n×m个方格阵列(见图6-3(a).精确的电路布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案.在布线时,电路只能沿直线或直角布线(见图6-3(b).为了避免线路相交,已布线了的方格做了封锁标记,其他线路不允许穿过被封锁的方格.
算法设计:对于给定的布线区域,计算最短布线方案.
数据输入:由文件input.txt给出输入数据.第1行有3个正整数n、m.k,分别表示布线区域方格阵列的行数、列数和封闭的方格数.接下来的k行中,每行2个正整数,表示被封闭的方格所在的行号和列号.最后的2行,每行也有2个正整数,分别表示开始布线的方格(p,q)和结束布线的方格(r,s).
结果输出:将计算的最短布线长度和最短布线方案输出到文件output.txt.文件的第1行是最短布线长度.从第2行起,每行2个正整数,表示布线经过的方格坐标.如果无法布线,则输出“NoSolution!".
算法设计:对于给定的方格棋盘,按照取数要求找出总和最大的数.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数m和n,分别表示棋盘的行数和列数.接下来的m行,每行有n个正整数,表示棋盘方格中的数.
结果输出:将取数的最大总和输出到文件output.txt.
算法设计:设计一个拉斯维加斯算法,对于给定的自然数n(1≤n≤100)计算在n×n个方格组成的棋盘上最少要放置多少个皇后才能控制棋盘上的所有方格,且放置的皇后互不攻击.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n.
结果输出:将计算的最少皇后数及最佳放置方案输出到文件output.txt.文件的第1行是最少皇后数:接下来的1行是皇后的最佳放置方案.
A.游程长度编码
B.四叉树
C.块码
D.链码
算法设计:对于给定的罗密欧与朱丽叶的迷宫,计算罗密欧通向朱丽叶的所有最少转弯道路.
数据输入:由文件input.txt给出输入数据.第1行有3个正整数n、m、k,分别表示迷宫的行数、列数和封闭的房间数.接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号.最后的2行,每行也有2个正整数,分别表示罗密欧所处的方格(p,q)和朱丽叶所处的方格(r,s).
结果输出:将计算的罗密欧通向朱丽叶的最少转弯次数和有多少条不同的最少转弯道路输出到文件output.txt.文件的第1行是最少转弯次数.第2行是不同的最少转弯道路数.接下来的n行每行m个数,表示迷宫的一条最少转弯道路.A[i][j]=k表示第k步到达方格(i,j):A[i][j]=-1表示方格(i,j)是封闭的.
如果罗密欧无法通向朱丽叶,则输出“NoSolution!".
算法设计:设计一个解n后问题的队列式分支限界法,计算在n×n个方格上放置彼此不受攻击的n个皇后的一个放置方案.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n.
结果输出:将计算的彼此不受攻击的n个皇后的一个放置方案输出到文件output.txt文件的第1行是n个皇后的放置方案.