博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSL JudgeOnline 1089——USACO 1.2 方块转换
阅读量:5159 次
发布时间:2019-06-13

本文共 2190 字,大约阅读时间需要 7 分钟。

USACO 1.2 方块转换 (枚举)

Time Limit:10000MS Memory Limit:65536K

Total Submit:37 Accepted:32
Case Time Limit:1000MS

Description

一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始

图案按照以下列转换方法转换成新图案的最小方式:

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

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

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

4:反射:图案在水平方向翻转(形成原图案的镜像)。

5:组合:图案在水平方向翻转,然后按照#1-#3之一转换。

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

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

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

Input

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

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

Output

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

Sample Input

3

@-@

@@-

@-@
@–
–@
Sample Output

1


这题我们枚举每一种情况,如果等于所要转化图案,就输出。没有则输出 7 。


代码如下:

type  arr=array[1..20,1..20] of char;var  a,b,x:arr;  n,i,j:longint;function tx1(a,b:arr):boolean;var  i,j:longint;begin  for i:=1 to n do    for j:=1 to n do      if a[i,j]<>b[n-j+1,i] then exit(false);  exit(true);end;function tx2(a,b:arr):boolean;var  i,j:longint;begin  for i:=1 to n do    for j:=1 to n do      if a[i,j]<>b[n-i+1,n-j+1] then exit(false);  exit(true);end;function tx3(a,b:arr):boolean;var  i,j:longint;begin  for i:=1 to n do    for j:=1 to n do      if a[i,j]<>b[j,n-i+1] then exit(false);  exit(true);end;function tx4(a,b:Arr):boolean;var  i,j:longint;begin        for i:=1 to n do                for j:=1 to n do                        if a[i,j]<>b[i,n-j+1] then exit(false);        exit(true);end;function tx5(a,b:arr):boolean;var        i,j:longint;begin  for i:=1 to n do    for j:=1 to n do      x[i,j]:=b[i,n-j+1];  if tx1(a,x) then exit(true);  if tx2(a,x) then exit(true);  if tx3(a,x) then exit(true);end;function tx6(a,b:arr):boolean;var  i,j:longint;begin  for i:=1 to n do    for j:=1 to n do      if a[i,j]<>b[i,j] then exit(false);  exit(true);end;begin  readln(n);  for i:=1 to n do    begin      for j:=1 to n do read(b[i,j]);      readln;    end;  for i:=1 to n do    begin      for j:=1 to n do      read(a[i,j]);      readln;    end;  if tx1(a,b) then writeln(1) else  if tx2(a,b) then writeln(2) else  if tx3(a,b) then writeln(3) else  if tx4(a,b) then writeln(4) else  if tx5(a,b) then writeln(5) else  if tx6(a,b) then writeln(6) else  writeln(7);end.

转载于:https://www.cnblogs.com/Comfortable/p/8412462.html

你可能感兴趣的文章
Oracle实例和Oracle数据库(Oracle体系结构)---转载
查看>>
软件业人才结构
查看>>
log4j.properties配置模板
查看>>
C# 拼接字符串的几种方式和性能
查看>>
Linux文件系统挂载管理
查看>>
Java路径
查看>>
Android Webview中解决H5的音视频不能自动播放的问题
查看>>
Android微信SDK API 调用教程【转】
查看>>
Android开发优化之——对Bitmap的内存优化
查看>>
最近的工作感悟
查看>>
JAVA数据类型
查看>>
在ASP.NET MVC中如何预防Cookie的窃取攻击(转载)
查看>>
EL表达式
查看>>
jaeger 使用初探
查看>>
IOS成长之路-Nsstring搜索方法rangeOfString
查看>>
为什么macos开机黑屏但是有声音?
查看>>
现在的心情
查看>>
Python-列表练习
查看>>
Python selenium —— 一定要会用selenium的等待,三种等待方式解读
查看>>
怎样group by一列 select多列
查看>>