一个算法设计题,求助各位大侠,急!谢谢!

1个回答

  • 回溯法就可以了.

    先抽象成数学问题:

    将区域抽象成点,区域有公共边界,则在对应点间连线,最后组成一个图.

    由于回溯法是对解空间的深度优先搜索,因此在一般情况下可用递归函数来实现回溯法如下:

    procedure try(i:integer);

    var

    begin

    if i>n then 输出结果

    else for j:=下界 to 上界 do

    begin

    if 可行{满足限界函数和约束条件} then

    begin

    置值;

    try(i+1); {递归到下一阶段求解};

    递归结束,回朔;

    end;

    end;

    end;

    说明:

    i是递归深度;

    n是深度控制,即解空间树的的高度;

    可行性判断有两方面的内容:不满约束条件则剪去相应子树;若限界函数越界,也剪去相应子树;两者均满足则进入下一层.

    再具体到本问题:

    i是染到第几个区域, n就是7, j就是1 to 4(染何种颜色),