模拟题目,依照题目给定的要求变换图形就可以,变换的优先级依次减小。

这个题目我写的非常乱。只是最还还是勉强能够执行

/*
ID:twd30651
PROG:transform
LANG:C++
*/
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;
#define MAX 10
char a[MAX][MAX];
char b[MAX][MAX];
char c[MAX][MAX];
char t[MAX][MAX];
int N;
int flag=0;
int check()
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
if(b[i][j]!=t[i][j])return 0;
}
return 1;
}
void do1(char a[][MAX],char b[][MAX],int f)//f是个标志。标志是第五个操作调用的。还是直接调用的
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
b[j][N-i-1]=a[i][j];
}
if(!f&&check()){printf("1\n");
flag=1;
}
}
void do2(char a[][MAX],char b[][MAX],int f)//同理
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
b[N-i-1][N-j-1]=a[i][j];
}
if(!f&&check()){
printf("2\n");
flag=1;
}
}
void do3(char a[][MAX],char b[][MAX],int f)//同理
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
b[N-j-1][i]=a[i][j];
}
if(!f&&check()){
printf("3\n");
flag=1;
}
}
void do4(char a[][MAX],char b[][MAX])
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
b[i][N-j-1]=a[i][j];
}
if(check()){
printf("4\n");
flag=1;
}
}
void do5(char a[][MAX],char b[][MAX])
{
do4(a,c);
for(int i=0;i<3;++i)
{
if(i==0)
{
do1(c,b,1);
if(check()){printf("5\n");
flag=1;
}
}
else if(i==1)
{
do2(c,b,1);
if(check()){printf("5\n");
flag=1;}
}
else
{
do3(c,b,1);
if(check()){printf("5\n");
flag=1;}
}
}
}
void do6(char a[][MAX],char b[][MAX])
{
for(int i=0;i<N;++i)
for(int j=0;j<N;++j)
{
b[i][j]=a[i][j];
}
if(check())
{
printf("6\n");
flag=1;
}
} int main(int argc,char *argv[])
{
freopen("transform.in","r",stdin);
freopen("transform.out","w",stdout);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%d",&N);
for(int i=0;i<N;++i)
scanf("%s",a[i]);
for(int i=0;i<N;++i)
scanf("%s",t[i]);
for(int i=1;i<=7;++i)
{
switch(i)
{
case 1:
if(flag==0)
do1(a,b,0);
break;
case 2:
if(flag==0)
do2(a,b,0);
break;
case 3:
if(flag==0)
do3(a,b,0);
break;
case 4:
if(flag==0)
do4(a,b);
break;
case 5:
if(flag==0)
do5(a,b);
break;
case 6:
if(flag==0)
do6(a,b);
break;
case 7:
if(flag==0)
printf("7\n");
break;
}
}
return 0;
}

最新文章

  1. centos 6.5 6.6 6.7安装gitlab教程(社区版)
  2. editplus中使用emmet?
  3. NEC学习 ---- 布局 -三列,左侧自适应
  4. MAC的OS X10.10更新以后进入用户界面就死机
  5. hdu 5587 规律
  6. js中冒泡事件和捕获事件
  7. struts2值栈分析
  8. 用PHP提取MYSQL二进制日志的SQL语句
  9. Maven-06: 插件的内置绑定
  10. 手动安装OpenCV下的IPP加速库
  11. 作业(更新ing)
  12. Factorized Hidden Variability Learning For Adaptation Of Short Duration Language Identification Models
  13. beanutils的使用
  14. Lab 1-3
  15. 循环神经网络-RNN进阶
  16. Java第14章笔记
  17. NYOJ 35 表达式求值
  18. 【刷题】LOJ 6014 「网络流 24 题」最长 k 可重区间集
  19. 让DELPHI自带的richedit控件显示图片
  20. HDFS的java接口——简化HDFS文件系统操作

热门文章

  1. Linux - Nginx配置反向代理。
  2. hdoj-- Walking Ant
  3. Node.js:JXcore
  4. Maven打包编译错误工作区间设置编码格式gbk可以utf-8不可以
  5. Nginx调优实战
  6. 虚基类——(1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数
  7. [Offer收割]编程练习赛33
  8. Android 自定义控件——图片剪裁
  9. 【MFC】如何在mfc窗口程序中调用控制台
  10. Win8.1应用开发之适配器模式(C#实现)