回 帖 发 新 帖 刷新版面

主题:求~~神秘的首都名  程序

神秘的首都名
如下字块中藏着九个首都名字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

回复列表 (共4个回复)

沙发

典型的搜索路径问题。

我在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条路径一起输出)。

板凳

谁发 pascal程序  谢谢

3 楼

1楼的就是PASCAL程序啊??
-_-!!

4 楼

他的意思是不知道对不对

我来回复

您尚未登录,请登录后再回复。点此登录或注册