主题:求~~神秘的首都名 程序
syg558
[专家分:30] 发布于 2007-08-24 20:06:00
神秘的首都名
如下字块中藏着九个首都名字DUBLIN、TOKYO、LONDON、ROME、BONN、PARIS、ZURICH、OSLO、LIMA,设计一个程序指出首都名的起始字母在字母方阵的行列号,及字母的走向(如图所示)。
O K D U B L I N
A L P G O C E V
R A S M N S M B
O S L O N D O N
Y I B L H L R C
K R Z U R I C H
O A I B X M U Z
T P Q G L A M V
走向:
Up
Up up
Left right
Left right
Down down
Left right
down
打印示例
BONN 1,5 down
LONDON 4,3 right
OSLO 4,4 up left
LIMA 5,6 down
ROME 5,7 up
沙发
Matodied [专家分:7560] 发布于 2007-08-25 14:49:00
典型的搜索路径问题。
我在QB里做过的,在PASCAL里还没做过。
程序:
CONST
a: ARRAY[1..8, 1..8] OF STRING = (
('O', 'K', 'D', 'U', 'B', 'L', 'I', 'N'),
('A', 'L', 'P', 'G', 'O', 'C', 'E', 'V'),
('R', 'A', 'S', 'M', 'N', 'S', 'M', 'B'),
('O', 'S', 'L', 'O', 'N', 'D', 'O', 'N'),
('Y', 'I', 'B', 'L', 'H', 'L', 'R', 'C'),
('K', 'R', 'Z', 'U', 'R', 'I', 'C', 'H'),
('O', 'A', 'I', 'B', 'X', 'M', 'U', 'Z'),
('T', 'P', 'Q', 'G', 'L', 'A', 'M', 'V'));
n: ARRAY[1..9] OF STRING =
('DUBLIN', 'TOKYO', 'LONDON', 'ROME', 'BONN', 'PARIS', 'ZURICH', 'OSLO', 'LIMA');
vn : ARRAY[1..8] OF STRING =
('UPLEFT', 'UP', 'UPRIGHT', 'LEFT', 'RIGHT', 'DOWNLEFT', 'DOWN', 'DOWNRIGHT');
v: ARRAY[1..8, 1..2] OF INTEGER = (
(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1));
VAR
i, j, k, l, m, x, y: INTEGER; f: BOOLEAN;
BEGIN
FOR i:=1 TO 8 DO BEGIN
FOR j:=1 TO 8 DO BEGIN
FOR k:=1 TO 9 DO BEGIN
FOR l:=1 TO 8 DO BEGIN
x := i; y := j; f := TRUE;
FOR m:=1 TO LENGTH(n[k]) DO BEGIN
IF (x <= 0) OR (y <= 0) OR (x > 8) OR (y > 8) THEN BEGIN
f := FALSE; BREAK;
END;
IF a[x, y] <> COPY(n[k], m, 1) THEN BEGIN
f := FALSE; BREAK;
END;
x := x + v[l, 1]; y := y + v[l, 2];
END;
IF f THEN WRITELN(n[k], ' ', i, ' , ', j, ' ', vn[l]);
END;
END;
END;
END;
END.
(其中OSLO有2条路径:4、1RIGHT和4、4UPLEFT,所以会把这2条路径一起输出)。