若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1406: 1.2.2 Transformations 方块转换

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,222

题目描述

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

输入

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

输出

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

样例输入

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

样例输出

1

参考代码

#include<stdio.h>
#include<string.h>
#define MAX 20
#define print(a) printf("%dn",a)
void rese90(char str[][MAX],int n){
    int i,j;
    char temp[MAX][MAX]={0};
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            temp[j][n-1-i]=str[i][j];
    for(i=0;i<n;i++)
        strcpy(str[i],temp[i]);
}
void resei(char str[][MAX],int n)
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n/2;j++){
            char c=str[i][j];
            str[i][j]=str[i][n-1-j];
            str[i][n-1-j]=c;
        }
}
int judge(char str[][MAX],char order[][MAX],int n)
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            if(str[i][j]!=order[i][j])
                return 0;
    return 1;
}
int main()
{
    int n;
loop:    while(scanf("%d",&n)==1)
    {
        char str[MAX][MAX]={0},order[MAX][MAX]={0};
        int i,res=7;
        //getchar();
        gets(str[0]);
        for(i=0;i<n;i++)
            gets(str[i]);
        for(i=0;i<n;i++)
            gets(order[i]);
        for(i=1;i<=3;i++){
            rese90(str,n);
            if(judge(str,order,n)){
                res=i;
                print(res);
                goto loop;
            }
        }
        rese90(str,n);
        resei(str,n);
        res=4;
        for(i=0;i<=3;i++){
            if(judge(str,order,n)){
                print(res);
                goto loop;
            }
            rese90(str,n);
            res=5;
        }
        resei(str,n);
        if(judge(str,order,n)){
            print(6);
            continue;
        }
        print(7);
    }
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip 原站点 Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist