Pascal题目(用循环或数组)!!急两天!

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:40:51
在5*5的方格棋盘中,若在某一个方格中放入一个黑棋子,则与该方格相邻的上下左右四个方格内不能再放白棋子。请你设计一个程序,由计算机寻找并显示放置若干个黑棋子就能控制整个棋盘再也不能放白棋子的方案。希望能用最少的黑子来控制整个棋盘。

这与八皇后的问题有些相似,设计一个过程,利用二维数组便可以解决.
八皇后的程序如下:
program tt;
var a:array [1..8] of integer;
b,c,d:array [-7..16] of integer;
t,i,j,k:integer;
procedure print;
begin
t:=t+1;
write(t,' ');
for k:=1 to 8 do write(a[k],' ');
writeln;
end;

procedure try(i:integer);
var j:integer;
begin
for j:=1 to 8 do {每个皇后都有8种可能位置}
if (b[j]=0) and (c[i+j]=0) and (d[i-j]=0) then {判断位置是否冲突}
begin
a[i]:=j; {摆放皇后}
b[j]:=1; {宣布占领第J行}
c[i+j]:=1; {占领两个对角线}
d[i-j]:=1;
if i<8 then try(i+1) {8个皇后没有摆完,递归摆放下一皇后}
else print; {完成任务,打印结果}
b[j]:=0; {回溯}
c[i+j]:=0;
d[i-j]:=0;
end;
end;
begin
for k:=-7 to 16 do {数据初始化}
begin
b[k]:=0;
c[k]:=0;
d[k]:=0;
end;
try(1);{从第1个皇后开始放置}
end.

但那个怎么改成5x5的方格呢
也许把8该成5就行了,有8的地方都改

的黑子来控制整个棋盘。程序显示的图示方式如下: