USACO 1.2-Transformations
2016-04-04 23:02
281 查看
/* ID: m1590291 TASK: transform LANG: C++ */ #include <iostream> #include <fstream> #include <algorithm> #define MAX 20 using namespace std; int n; char a[MAX][MAX],b[MAX][MAX]; bool check() //检查是否相等 { bool flag=true; for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(a[i][j]!=b[i][j]) return false; return true; } void to90() //旋转90度 { char tmp[MAX][MAX]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) tmp[j][n-i-1]=a[i][j]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=tmp[i][j]; } void Ref() //中央铅垂线翻转 { char tmp[MAX][MAX]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) tmp[i][n-j-1]=a[i][j]; for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=tmp[i][j]; } int main() { ifstream fin ("transform.in"); ofstream fout ("transform.out"); while(fin>>n) { int flag=1,ans=100; if(n<1 || n>10) break; for(int i=0;i<n;i++) fin>>a[i]; for(int i=0;i<n;i++) fin>>b[i]; for(int i=1;i<4;i++){ to90(); if(check() == true) ans=min(ans,i); } to90(); //再次旋转90度,使图形变回原样 if(ans>4){ Ref(); if(check() == true) ans=4; else{ for(int i=1;i<4;i++){ to90(); if(check() == true) ans=5; } } } if(ans>5){ if(check() == true) ans=6; else ans=7; } fout<<ans<<endl; } return 0; }
相关文章推荐
- 每天写一篇论文理解
- 使用nvm让不同版本的Node.js共存
- 锋利的jQuery第2版学习笔记8~11章
- oracle常见基础知识
- USACO 1.2-Palindromic Squares
- 循环语句
- [BZOJ1030][JSOI2007]文本生成器(AC自动机+dp)
- Android本地广播
- USACO 1.2-Name That Number
- iOS打电话、发短信
- LeetCode 165 Compare Version Numbers
- Android Studio如何使用Git提交代码到GitHub和OsChina并解决冲突
- ssm框架
- 递归存储过程
- 异步并行批处理框架设计的一些思考
- django之创建第5个项目-条件语句
- USACO 1.2-Milking Cows
- 基于JSP在线答题程序设计
- 神经网络BP算法
- Java NIO系列教程(一) Java NIO 概述