单词方阵

var
 s:string;
 f:array[1..8,1..2]of longint;
 a:array[0..100] of string;
 b:array[1..100,1..100]of boolean;
 i,j,n,m,v,k,bb,x,y,ans:longint;
function check(x,y,shu:longint):boolean;
 var i,j:longint;
 begin
  if (x>=1)and(x<=n)and(y>=1)and(y<=n)and(a[x,y]=s[shu]) then exit(true);
  exit(false);
 end;
procedure put(i,j,m:longint);
 var v:longint;
 begin
  for v:=1 to 7 do
  begin
   b[i,j]:=true;
   i:=i+f[m,1];
   j:=j+f[m,2];
  end;
 end;
procedure find(i,j:longint);
 var m,k,x,y:longint;
 begin
 for m:=1 to 8 do
  begin
   x:=i; y:=j;bb:=0;
   for k:=1 to 7 do
    if check(x,y,k) then
     begin
      x:=x+f[m,1];
      y:=y+f[m,2];
     end
     else begin bb:=1;break;end;
   if (k=7)and(bb=0) then
   put(i,j,m);
  end;
 end;
begin
 s:='yizhong';
 f[1,1]:=1; f[1,2]:=0;
 f[2,1]:=0; f[2,2]:=1;
 f[3,1]:=-1; f[3,2]:=0;
 f[4,1]:=0; f[4,2]:=-1;
 f[5,1]:=1; f[5,2]:=1;
 f[6,1]:=1; f[6,2]:=-1;
 f[7,1]:=-1; f[7,2]:=1;
 f[8,1]:=-1; f[8,2]:=-1;
 fillchar(b,sizeof(b),false);
 read(n);
 for i:=0 to n do
 readln(a[i]);
 for i:=1 to n do
  for j:=1 to n do
  if a[i,j]='y' then
   find(i,j);
 for i:=1 to n do
 begin
  for j:=1 to n do
  if (b[i,j]) then write(a[i,j])
              else write('*');
  writeln;
 end;
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值