一个八皇后的程序,不知道怎么搞的,老出IO错
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=8;
type list=record
tag:integer;
data:integer;
end ;
//int m,j,k,t,i=0;
var
a:array[0..n,0..n] of list;
m,j,k,t:integer;
i:integer;
begin
i:=0;
t:=0;
for j:=0 to n do
for k:=0 to n do
begin
a[j][k].data:=0;
a[j][k].tag :=0;
end;
while i<n do
begin
m:=0;
while m<n do
begin
if a[m][i].data<>0 then
m:=m+1
else
break;
end;
if (m<n) and (i=7) then
begin
writeln('good');
a[m][i].data:=1;
break;
end;
if m<n then
begin
a[m][i].data:=1;
for j:=0 to n do
begin
if j>i then
begin
a[m][j].data:=2;
a[m][j].tag:=a[m][j].tag+1;
end;
for k:=0 to n do//(k=0;k<n;k++)
begin
if k>i then
begin
if (k+j)=(i+m) then
begin
a[j][k].data:=2;
a[j][k].tag:=a[j][k].tag+1;
end;
if (k-j)=(i-m) then
begin
a[j][k].data:=2;
a[j][k].tag:=a[j][k].tag+1;
end;
end;
end;
end;
i:=i+1;
end
else
begin
i:=i-1;
for j:=0 to n do//(j=0;j<n;j++)
if a[j][i].data=1 then
begin
a[j][i].data:=2;
t:=j;//找到了行。
end;
for j:=0 to n do //(j=0;j<n;j++)
begin
if j>i then //对该数所对应的行进行处理,还原。
begin
a[t][j].tag:=a[t][j].tag+1;
if a[t][j].tag=0 then
a[t][j].data:=0;
end;
for k:=0 to n do //(k=0;k<n;k++)
begin
if k>i then
begin
if (k+j)=(i+t) then
begin
a[j][k].tag:=a[j][k].tag+1;
if a[j][k].tag=0 then
a[j][k].data:=0;
end;
if (k-j)=(i-t) then
begin
a[j][k].tag:=a[j][k].tag+1;
if a[j][k].tag=0 then
a[j][k].data:=0;
end;
end;
end;
end;
end;
end;
for j:=0 to n do//(j=0;j<n;j++)
for i:=0 to n do//(i=0;i<n;i++)
if a[j][i].data=1 then
writeln(inttostr(i));
// cout<<j<<'\t'<<i<<endl;
end.
麻烦各位给看看