當前位置:編程學習大全網 - 編程軟體 - 編程:交換棋子位置。

編程:交換棋子位置。

百度中有類似的題(/question/650725954196752925),請參考。

type

chararray=array[1..7]?of?char;

var

q:chararray;

i,j,k:integer;

min:longint;

smin:string;

procedure?next(t:integer;s:string);?{t為步數,s為以空格為中心的移入記錄}

var

i,j,k:integer;

q0:chararray;

s0:string;

{最少步數必定為白棋只向右移動,黑棋只向左移動}

begin

for?i:=1?to?7?do?write(q[i]:1);?writeln;

if?(q[1]='B')and(q[2]='B')and(q[3]='B')and

(q[5]='W')and(q[6]='W')and(q[7]='W')?then

begin

if?t<min?then?begin?min:=t;?smin:=s;?end;

end

else

begin

for?i:=1?to?7?do?if?q[i]='?'?then?begin

str(i:0,s0);

if?(i-1>=1)and(q[i-1]='W')?then?begin?

q0:=q;?{保存數組,以便還原}

q[i-1]:='?';?

q[i]:='W';?

next(t+1,s+s0+'L1?');?

q:=q0;?{回溯}

end;

if?(i+1<=7)and(q[i+1]='B')?then?begin?

q0:=q;?

q[i+1]:='?';?

q[i]:='B';?

next(t+1,s+s0+'R1?');?

q:=q0;?

end;

if?(i-2>=1)and(q[i-2]='W')and(q[i-1]='B')?then?begin

q0:=q;?

q[i-2]:='?';?

q[i]:='W';?

next(t+1,s+s0+'L2?');?

q:=q0;?

end;

if?(i+2<=7)and(q[i+2]='B')and(q[i+1]='W')?then?begin

q0:=q;?

q[i+2]:='?';?

q[i]:='B';?

next(t+1,s+s0+'R2?');?

q:=q0;?

end;

end;

end;

end;

begin

for?i:=1?to?3?do?q[i]:='W';

q[4]:='?';

for?i:=5?to?7?do?q[i]:='B';

min:=99999;

next(0,'');

writeln(min);

writeln(smin);

end.

  • 上一篇:---DNF下城與勇士---關於鬼劍士專職----
  • 下一篇:長沙縣星隆國際廣場安全嗎
  • copyright 2024編程學習大全網