usaco 1.22

来源:互联网 发布:手机4g网络怎么加速 编辑:程序博客网 时间:2024/06/05 23:01

简单的枚举,一开始看了一下觉得和以前的魔板差不多,果断开始广搜,结果发现每个操作仅能一次,审题啊。。

1-5之间有联系,转4个90度就相当于转回来。。

/* ID: zhangw31PROG: transformLANG: C++*/#include <iostream>#include <cstdio>#include <fstream>using namespace std;const int MAXN = 11;int N, ans;char pattern[MAXN][MAXN];char target[MAXN][MAXN];char change[MAXN][MAXN];void clockwiserot() {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {change[j][N-i-1] = pattern[i][j];}}for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {pattern[i][j] = change[i][j];}}}void refle() {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {change[i][N-j-1] = pattern[i][j];}}for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {pattern[i][j] = change[i][j];}}}bool checkOK() {for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {if (pattern[i][j] != target[i][j]) {return false;}}}return true;}void testRotate(int a) {if (checkOK() && a < ans) ans = a;}int main() {ifstream fin("transform.in");ofstream fout("transform.out");fin >> N;for (int i = 0; i < N; ++i) fin >> pattern[i];for (int i = 0; i < N; ++i) fin >> target[i];ans = 7;testRotate(6);for (int i = 1; i <= 3; ++i) {clockwiserot();testRotate(i);}clockwiserot();refle();testRotate(4);for (int i = 0; i < 3; ++i) {clockwiserot();testRotate(5);}fout << ans << endl;}

0 0