USACO 1.2.2 Transformations

/*
 PROG: transform
 LANG: C++
*/

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
ifstream fin("transform.in");
ofstream fout("transform.out");
int
n;
char
a[11][11],b[11][11];
void
input()
{

fin>>n;
 for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
fin>>a[i][j];
for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
fin>>b[i][j];
}

bool
ok(char p[][11])
{

for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
if
(p[i][j]!=b[i][j])
return
false;
return
true;
}

bool trans()
{

int
c[11][11];
for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
c[i][j]=a[i][j];
for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
a[n-j+1][i]=c[i][j];
return ok(a);
}

bool
turn()
{

int
c[11][11];
for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
c[i][j]=a[i][j];
for
(int i=1;i<=n;i++)
for
(int j=1;j<=n;j++)
a[i][n-j+1]=c[i][j];
return ok(a);
}
 int solve()
{

for
(int i=1;i<=3;i++)
if
(trans()) return i;
trans();
if
( turn () ) return 4;
for
(int i=1;i<=3;i++)
if
(trans()) return 5;
trans();turn();
if
( ok(a) ) return 6;
return
7;
}

int
main()
{

input();
fout<<solve()<<endl;
return
0;
}

Compiling...
Compile: OK

Executing...
      Test 1: TEST OK [0 secs]
      Test 2: TEST OK [0 secs]
      Test 3: TEST OK [0.004 secs]
      Test 4: TEST OK [0 secs]
      Test 5: TEST OK [0.004 secs]
      Test 6: TEST OK [0.004 secs]
      Test 7: TEST OK [0 secs]
      Test 8: TEST OK [0 secs]

All tests OK.

YOUR PROGRAM ('transform') WORKED FIRST TIME! 
That's fantastic -- and a rare thing. 
Please accept these special automated congratulations.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值