题目描述                     Description

一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始 图案按照以下列转换方法转换成新图案的最小方式: #1:转90度:图案按顺时针转90度。 #2:转180度:图案按顺时针转180度。 #3:转270度:图案按顺时针转270度。 #4:反射:图案在水平方向翻转(形成原图案的镜像)。 #5:组合:图案在水平方向翻转,然后按照#1-#3之一转换。 #6:不改变:原图案不改变。 #7:无效转换:无法用以上方法得到新图案。 如果有多种可用的转换方法,请选择序号最小的那个。

输入描述 Input Description              
第一行: 单独的一个整数N。
第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。
第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。
输出描述                 Output Description              

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

                样例输入                 Sample Input              

3 @-@ --- @@- @-@ @-- --@

样例输出                 Sample Output              

1

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath> using namespace std; char s1[][];
char s2[][];
char s3[][];
char s4[][]; int main()
{
int n,i,j;
cin>>n;
for(i = ;i<=n;i++)
scanf("%s",s1[i]+);
for(i = ;i<=n;i++)
scanf("%s",s2[i]+);
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s3[j][n-i+] = s1[i][j];
}
bool b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s3[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s4[j][n-i+] = s3[i][j];
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s4[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s3[j][n-i+] = s4[i][j];
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s3[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
{
for(j = ;j<=n;j++)
{
s3[i][n-j+] = s1[i][j];
}
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s3[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s4[j][n-i+] = s3[i][j];
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s4[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s3[j][n-i+] = s4[i][j];
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s3[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
{
s4[j][n-i+] = s3[i][j];
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s4[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
b = ;
for(i = ;i<=n;i++)
for(j = ;j<=n;j++)
if(s1[i][j]!=s2[i][j]) b = ;
if(b)
{
cout<<<<endl;
return ;
}
cout<<<<endl;
return ;
}

codevs1387的更多相关文章

随机推荐

  1. <audio>使用2

    1.属性测试 <!--显示控件--> <audio src="../images/wind.mp3" id="audioOne" contro ...

  2. UIView--UIImageView

    1.contentMode view.contentMode = UIViewContentModeScaleAspectFill; 2.是否实现触摸 3.简单实现动画 图片的名字为campFire0 ...

  3. C#中精确计时的一点收获

    以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @  3.00GHz 2.99GHz,2.96GB内存 根据综合网上的一些文章,精 ...

  4. node学习 process笔记

    如果你是node大神好了可以关闭此页面了因为接下来游览会白白浪费你许多时间,最近一直学习node.js今晚看到 alsotang 在 github上的node教程 https://github.com ...

  5. C# 调用c++报错可能性分析

    1.在调用之前,可以用工具(Dependency)检测下c++库所依赖的文件,看是否有错误.如果有错误,请先下补充所需运行环境. 2.如果c++ 函数 形参需要C#传入结构体,可如下: [Struct ...

  6. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  7. Android进程

    android进程等级 1.前台进程 2.可视进程 3.服务进程 4.后台进程 5.空进程 让应用退出方式 finish();让应用成为空进程 Process.killProcess();杀进程 sy ...

  8. has leaked ServiceConnection com.baidu.location.LocationClient

    02-06 05:01:52.806: E/ActivityThread(1120): Activity com.project.xxxActivity $1@45fc5af8 that was or ...

  9. python核心编程-习题-第二章

    PS:PDF在线地址:http://bcmi.sjtu.edu.cn/~zhaohai/ptm2012/data/Python-kernel.programming.v2.pdf 2-1  变量,pr ...

  10. 如何测试一个U盘

    功能测试: 1 在windows xp比较流行的操作系统上是否可以识别(装了驱动后是否可以) 2 在电脑上显示的盘符是否正确 3 总空间,可用空间,已用空间是否显示正确 4 u盘中是否可以拷入各种格式 ...