不是VIP会员,不能显示答案

题目解答

题目:
(20分,每空4分)
4色问题。 设有下列形状的图形:(N=8),其编号为1,2,……,N。

图形之间的相邻关系用下面的邻接矩阵表示:

其中:1——相邻,0——不相邻。
[程序要求] 将上面图形的每一个部分涂上红(1),黄(2),蓝(3),绿(4)四种颜色之一,要求相邻的部分有不同颜色。
输入方式:邻接矩阵。
输出方式:区域、颜色。
…………
[算法描述] 用数组R:ARRAY[1..N,1..N] OF 0..1表示相邻关系,S:ARRAY[1..N] OF INTEGER 表示颜色。
采用回溯的方法,首先给第一个图形涂上红色(1),然后在下面的图形中依次涂上其他颜色,当有矛盾时回溯解决。
        PROGRAM EXP2(INPUT,OUTPUT);
     CONST N=8;
     VAR I,J,K:INTEGER;
             R:ARRAY[1..N,1..N] OF 0..1;
             S:ARRAY[1..N]  OF INTEGER;
     BEGIN
        FOR I:=1 TO N DO
          BEGIN
             FOR J:=1 TO N DO READ(R[I,J]); READLN
          END;
             S[1]:=1   ;I:=2; J:=1;
        WHILE I<=N DO
           BEGIN
              WHILE (J<=4) AND (I<=N) DO
                 BEGIN
                     K:=1;
                     WHILE   (K<I)AND(S[K]*R[I,J])<>J    DO 
                         K:=K+1;
                         IF K<I THEN    J:=J+1      
                               ELSE BEGIN
                                       S[I]:=J     ;   I:=I+1; J:=1
                                     END
                  END;
             IF J>4 THEN BEGIN 
                           I:=I-1;   J:=S[I]+1  ;  
                         END;
           END;
        FOR I:=1 TO N DO WRITELN(I,'?',S[I])
     END.
考点:
分析:
解答:
评论:
老师: