usaco 1.2:Transformations

来源:互联网 发布:王者和lol的区别 知乎 编辑:程序博客网 时间:2024/05/16 05:53

描述

一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:

1:转90度:图案按顺时针转90度。

2:转180度:图案按顺时针转180度。

3:转270度:图案按顺时针转270度。

4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。

5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。

6:不改变:原图案不改变。

7:无效转换:无法用以上方法得到新图案。

如果有多种可用的转换方法,请选择序号最小的那个。

 

 格式

PROGRAM NAME: transform

INPUT FORMAT:

(file transform.in)

第一行: 单独的一个整数N。

第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。

第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。

OUTPUT FORMAT:

(file transform.out)

单独的一行包括1到7之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。

 SAMPLE INPUT

3

@—@

———

@@—

@—@

@——

——@

SAMPLE OUTPUT

1

 

这道题太蛋疼了,实在不想调了,可耻的直接交了标程。。

 

 

{
ID:gy_kw1
PROG:transform
LANG:PASCAL
}
var

    n,i,j:longint;
   bo: boolean;
   a,b,c,d:array[1..10,1..10]of char;
procedure zyz;

      begin
      for i:= 1 to n do
     for j:= 1 to n do
        if (b[i,j]<>c[i,j]) then bo:=false;
         end;
procedure g1;

   begin
     for i:= 1 to n do
      for j:= 1 to n do
       c[i,j]:=a[n+1-j,i];   zyz;
         if bo=true  then begin writeln('1'); halt; end else bo:=true;
       end;
procedure g2;

      begin
     for i:= 1 to n do
      for j:= 1 to n do
       c[i,j]:=a[n+1-i,n+1-j]; zyz;
         if bo=true  then begin writeln('2'); halt; end else bo:=true;
        end;
procedure g3;

      begin
     for i:= 1 to n do
      for j:= 1 to n do
      c[i,j]:=a[j,n+1-i];zyz;
         if bo=true  then begin writeln('3'); halt; end else bo:=true;
       end;
procedure g4;

      begin
     for i:= 1 to n do
      for j:= 1 to n do
      c[i,j]:=a[i,n+1-j];zyz;
        if bo=true  then begin writeln('4'); halt; end else bo:=true;
      end;
procedure g5;

       begin
       for i:= 1 to n do for j:= 1 to n do
      d[i,j]:=a[i,n+1-j];
      for i:= 1 to n do for j:= 1 to n do
       c[i,j]:=d[j,n+1-i];zyz;
        if bo=true  then begin  writeln('5'); halt; end
                    else begin bo:=true;
                    for i:= 1 to n do for j:= 1 to n do
                     c[i,j]:=d[n+1-i,n+1-j];zyz;
                      if bo=true  then begin  writeln('5'); halt; end
                     else begin bo:=true;
                     for i:= 1 to n do for j:= 1 to n do
                    c[i,j]:=d[n+1-j,i];zyz;
                     if bo=true  then begin  writeln('5');halt; end;end;end;
          end;
procedure g6;
      begin
      for i:= 1 to n do
      for j:= 1 to n do
      c[i,j]:=a[i,j];zyz;
        if bo=true  then begin writeln('6'); halt; end else bo:=true;
      end;
begin

   assign(input,'transform.in');
       reset(input);
       assign(output,'transform.out');
       rewrite(output);
       readln(n);
       for i:= 1 to n do begin for j:= 1 to n do
      read(a[i,j]);readln; end;
        for i:= 1 to n do begin for j:= 1 to n do
          read(b[i,j]);readln; end;
     bo:=true;
     g1;g2;g3;g4;g5;g6;
      writeln('7');
 close(input); close(output);
       end.