USACO 1.2-Transformations
生活随笔
收集整理的這篇文章主要介紹了
USACO 1.2-Transformations
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
ID: m1590291
TASK: transform
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX 20
using namespace std;
int n;
char a[MAX][MAX],b[MAX][MAX];bool check() //檢查是否相等
{bool flag=true;for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(a[i][j]!=b[i][j])return false;return true;
}
void to90() //旋轉90度
{char tmp[MAX][MAX];for(int i=0;i<n;i++)for(int j=0;j<n;j++)tmp[j][n-i-1]=a[i][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=tmp[i][j];
}
void Ref() //中央鉛垂線翻轉
{char tmp[MAX][MAX];for(int i=0;i<n;i++)for(int j=0;j<n;j++)tmp[i][n-j-1]=a[i][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=tmp[i][j];
}
int main()
{ifstream fin ("transform.in");ofstream fout ("transform.out");while(fin>>n){int flag=1,ans=100;if(n<1 || n>10) break;for(int i=0;i<n;i++) fin>>a[i];for(int i=0;i<n;i++) fin>>b[i];for(int i=1;i<4;i++){to90();if(check() == true)ans=min(ans,i);}to90(); //再次旋轉90度,使圖形變回原樣if(ans>4){Ref();if(check() == true)ans=4;else{for(int i=1;i<4;i++){to90();if(check() == true)ans=5;}}}if(ans>5){if(check() == true)ans=6;elseans=7;}fout<<ans<<endl;}return 0;
}
轉載于:https://www.cnblogs.com/Jstyle-continue/p/6352039.html
總結
以上是生活随笔為你收集整理的USACO 1.2-Transformations的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsp中的内置对象(9个)、作用
- 下一篇: 并发集合(二)使用非阻塞线程安全的列表