方块转换

1387 方块转换

USACO

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 青铜 Bronze

题目描述 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
@[email protected]
---
@@-
@[email protected]
@--
[email protected]

样例输出 Sample Output

1

#include <iostream>
#include <cstdio>
using namespace std;
char c1[11][11],c2[11][11],cc[11][11];
bool bijiao(int m);
void zhuanyi(int m);
void xuanzhuan(int m);
void fanzhuan(int m);
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>c1[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>cc[i][j];
    for(int i=1;i<=3;i++)
    {
        xuanzhuan(n);
        if(bijiao(n))
        {
            cout<<i<<endl;
            return 0;
        }
    }
    xuanzhuan(n);
    if(bijiao(n))
    {
        cout<<6<<endl;
        return 0;
    }
    fanzhuan(n);
    if(bijiao(n))
    {
        cout<<4<<endl;
        return 0;
    }
    for(int i=1;i<=3;i++)
    {
        xuanzhuan(n);
        if(bijiao(n))
        {
            cout<<5<<endl;
            return 0;
        }
    }
    cout<<7<<endl;return 0;
}
void zhuanyi(int m)
{
    for(int i=1;i<=m;i++)
        for(int j=1;j<=m;j++)
            c1[i][j]=c2[i][j];
}
bool bijiao(int m)
{
    for(int i=1;i<=m;i++)
        for(int j=1;j<=m;j++)
            if(c1[i][j]!=cc[i][j])
                return false;
    return true;
}
void xuanzhuan(int m)
{
    for(int i=1;i<=m;i++)
        for(int j=1;j<=m;j++)
            c2[j][m+1-i]=c1[i][j];
    zhuanyi(m);
}
void fanzhuan(int m)
{
    for(int i=1;i<=m;i++)
        for(int j=1;j<=m;j++)
            c2[i][m+1-j]=c1[i][j];
    zhuanyi(m);
}
时间: 2024-11-03 01:23:27

方块转换的相关文章

【USACO 1.2.2】方块转换

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

方块转换 transform

方块转换 transform [题目描述]: 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案. 写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: #1:转90 度:图案按顺时针转90 度. #2:转180 度:图案按顺时针转180 度. #3:转270 度:图案按顺时针转270 度. #4:反射:图案在水平方向翻转(形成原图案的镜像). #5:组合:图案在水平方向翻转,然后按照#1-#3 之一转换. #6:不改变:原图案不改变. #7:无效

洛谷 P1205 [USACO1.2]方块转换 Transformations

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

【USACO1.2_2】★Transformations 方块转换

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

Transformations 方块转换

题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化: 第一种:顺时针旋转90度: c[j][n-i+1]=a[i][j]; 第二种:旋转180度: c[n-i+1][n-j+1]=a[i][j]; 第三种:顺时针旋转270度: c[i][j]=a[j][n-i+1]; 第四种:反射 c[i][n-j+1]=a[i][j]; 第五种:组合 先反射:c[i][n-j+1]=a[i][j]; 然后再按照1到3之间的一种再次转换. 第六种:不改变 c[i][j]=a[i][j

luogu P1205 方块转换

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

创意俄罗斯方块

版权声明:访问者可将本网站提供的内容或服务用于个人学习.研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利.除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬.转载需表明文章地址. 本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除. 作者QQ:1765813715 由于这个游戏倾入了我大量的时间和创意 所以写了个版权声明 这个游戏在基础的俄罗斯方块上面还添加了 

vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)

// 可以用,此程序实现的是是文字转换到机内码.机内码=国标码+8080H,不过学习了. //此程序是利用汉字在机器内输出就是机内码的原理,直接保存的,其实挺简单. //输入一串汉字和数字的混合字符, 经过程序转换, 对应输出一串16进制码(数字-〉ASII码,汉字—〉国标码) CString temp; GetDlgItemText(IDC_EDIT1,m_hanzi);//将汉字保存到变量m_hanzi unsigned char *b=new unsigned char[m_hanzi.G

BZOJ 4823: [Cqoi2017]老C的方块

分析: 我觉得我的网络流白学了...QAQ... 其实数据范围本是无法用网络流跑过去的,然而出题者想让他跑过去,也就跑过去了... 看到题目其实感觉很麻烦,不知道从哪里入手,那么仔细观察所给出的有用信息... 我们考虑网格图是一个含有挡板的图,这个挡板的分布很有规律,大概是每一行的相邻两个挡板都隔了四个格子,并且奇数行的排列相同,偶数行的排列相同... 然后考虑不合法的方块形状有什么共同点:仔细观察就会发现,所有的不合法图形中,挡板的左边至少有一个格子,右边至少有一个格子,并且左边的格子连着一个