题目描述                     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. php安装扩展模块(curl模块)

    php安装扩展模块的思路: 1,首先找到需要安装的扩展模块的目录.一般在/usr/local/php/ext目录下 但是有的模块php源码中不一定有,需要自己下载比如memcache.redis等. ...

  2. vs2012 设计器 视图异常

    WPF 开发/(其他xaml app 的开发) 的时候 设计视图功能非常方便  不过有时候经常遇到 设计器加载失败的情况,原因很多  很多时候是代码问题导致,设计器无法展现视图,也有sliverlig ...

  3. Velocity中避免null引起的数据问题

    请先看下面一段代码: #foreach($id in [1..50]) #set($user = $User.Get($id)) $id : ${user.name} #end 上面这段代码中,假设只 ...

  4. 配置managed server

    managed server往往是部署应用程序的server,所以最好在weblgoic上配置上managed server,不要把应用程序直接部署到admin server上. 一.受管服务器的创建 ...

  5. Visual Studio 2008快捷键

    命令行:Devenv 启动VS StudionIsqlw 启动SQL2000查询分析器Sqlwb 启动SQL2005企业管理器Inetmgr 启动IIS管理器大纲Ctrl+M,O折叠所有大纲Ctrl+ ...

  6. Memcache 在win7x64中安装配置

    Memcached从0.2.0开始,要求PHP版本大于等于5.2.0. 环境:phpstudy集成环境 目标:实现php用memcache 下载:memcache for win 64 http:// ...

  7. 痛苦的版本对齐(3) cygwin下的路径引用

    [续<痛苦的版本对齐(2) 和时间的相关性>]http://www.cnblogs.com/yvivid/p/3541142.html 初步定位,如下告警为.depend文件路径问题导致. ...

  8. CSS3 设置 Table 隔行变色

    table tr:nth-child(odd){background:#F4F4F4;} table td:nth-child(even){color:#C00;}

  9. U盘详解

    摘要:U盘,称呼最早来源于朗科公司生产的一种新型存储设备,名曰“优盘”,使用USB接口进行连接.USB接口就连到电脑的主机后,U盘的资料可与电脑交换.而之后生产的类似技术的设备由于朗科已进行专利注册, ...

  10. QT:程序忙碌时的进度条——开启时间循环,等结束的时候再退出

    当程序在执行一项(或多项)耗时比较久的操作时,界面总要有一点东西告诉用户“程序还在运行中”,那么,一个“没有终点”的进度条就是你需要的了.PS:最好把耗时的操作扔到一个子线程中去,以免他阻塞了界面线程 ...