62 方块转换
作者: xxx时间限制: 1S章节: 二维数组
问题描述 :
一块N x N(1=<N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。
写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:
#1:转90度:图案按顺时针转90度。
#2:转180度:图案按顺时针转180度。
#3:转270度:图案按顺时针转270度。
#4:反射:图案在水平方向翻转(形成原图案的镜像)。
#5:组合:图案在水平方向翻转,然后按照#1-#3之一转换。
#6:不改变:原图案不改变。
#7:无效转换:无法用以上方法得到新图案。
如果有多种可用的转换方法,请选择序号最小的那个。
比如:
转换前:
@-@ — @@-
转换后: @-@ @-- --@
这种转换采取#1(按顺时针转90度)即可。
注意:图案中的字符“@”和“-”在转90度后,还是“@”和“-”。不要认为“-”转90度后变成“|”。
代码:
/*
T62 方块转换
算法概述:通过比较两个图案内的符号是否满足坐标变换后的对应关系即可
*/
#include<stdio.h>
#include<string.h>
#define MAX_SIZE 12
typedef struct Icons {
char iconStr[MAX_SIZE];
} Icons;
int isCaseOne(Icons iconsFir[], Icons iconsSec[], int n);
int isCaseTwo(Icons iconsFir[], Icons iconsSec[], int n);
int isCaseThree(Icons iconsFir[], Icons iconsSec[], int n);
int isCaseFour(Icons iconsFir[], Icons iconsSec[], int n);
int isCaseFive(Icons iconsFir[], Icons iconsSec[], int n);
int isCaseSix(Icons iconsFir[], Icons iconsSec[], int n);
int main() {
int N = 0;
int i = 0, j = 0;
Icons iconsFir[MAX_SIZE];
Icons iconsSec[MAX_SIZE];
char temp[MAX_SIZE];
scanf("%d", &N);
for (i = 1; i <= N; i++) {
scanf("%s", iconsFir[i].iconStr);
// 加字符
j = 0;
strcpy(temp