您的位置:首页 > 编程语言

自己的usaco代码---PROB Transformations

2013-08-14 14:31 211 查看
原创代码

仅供参考

欢迎评论O(∩_∩)O~

/*
1:顺时针90
2:顺时针180
3:顺时针270
4:镜面
5:镜面后1-3
6:完全一样
7:没办法
*/
/*
ID: 输你自己的
PROG: transform
LANG: C++
*/
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
char a[12][12];
char b[12][12];
char c[12][12];
char d[12][12];
int n;
void h1()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[j][n-i+1]=a[i][j];
}
void h2()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[n-i+1][n-j+1]=a[i][j];
}
void h3()
{
h2();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[j][n-i+1]=c[i][j];
}
void h4()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[i][n-j+1]=a[i][j];
}
void h51()
{
h4();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[j][n-i+1]=c[i][j];
}
void h52()
{
h4();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[n-i+1][n-j+1]=c[i][j];
}
void h53()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
c[n-j+1][i]=a[i][j];
}
int main()
{
freopen("transform.in","r",stdin);
freopen("transform.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>b[i][j];
int t;
h1();
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]==b[i][j]) t++;
if(t==n*n) {printf("1\n"); exit(0);}
t=0;
h2();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]==b[i][j]) t++;
if(t==n*n) {printf("2\n"); exit(0);}
t=0;
h3();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(d[i][j]==b[i][j]) t++;
if(t==n*n) {printf("3\n"); exit(0);}
h4();
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]==b[i][j]) t++;
if(t==n*n) {printf("4\n"); exit(0);}
h51();
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(d[i][j]==b[i][j]) t++;
if(t==n*n) {printf("5\n"); exit(0);}
h52();
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(d[i][j]==b[i][j]) t++;
if(t==n*n) {printf("5\n"); exit(0);}
h53();
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]==b[i][j]) t++;
if(t==n*n) {printf("5\n"); exit(0);}
t=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]==b[i][j]) t++;
if(t==n*n) {printf("6\n"); exit(0);}

printf("7\n");
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息