C++_USACO_Transformations
2013-07-22 09:14
267 查看
#include<iostream> #include<fstream> using namespace std; int main(){ ifstream fin("transform.in"); ofstream fout("transform.out"); char bimage[10][10]; char aimage[10][10];bool tryed[8]={false,false,false,false,false,false,false,false}; int n; int i; bool is_out=false; fin>>n; for(i=0;i<n;i++) for(int j=0;j<n;j++) fin>>bimage[i][j]; for(i=0;i<n;i++) for(int j=0;j<n;j++) fin>>aimage[i][j]; i=0; while(i<n){ for(int j=0;j<n;j++){ if(bimage[i][j]!=aimage[j][n-i-1] && tryed[0]==false) tryed[0]=true; if(bimage[i][j]!=aimage[n-i-1][n-j-1] && tryed[1]==false) tryed[1]=true; if(bimage[i][j]!=aimage[j][i] && tryed[2]==false) tryed[2]=true; if(bimage[i][j]!=aimage[i][n-j-1] && tryed[3]==false) tryed[3]=true; if(bimage[i][j]!=aimage[n-j-1][n-i-1] && tryed[4]==false) tryed[4]=true; if(bimage[i][j]!=aimage[n-i-1][j] && tryed[5]==false) tryed[5]=true; if(bimage[i][j]!=aimage[n-j-1][i] && tryed[6]==false) tryed[6]=true; if(bimage[i][j]!=aimage[i][j] && tryed[7]==false) tryed[7]=true; } i++; } for(int k=0;k<4;k++){ if(!tryed[k]){ is_out=true; fout<<k+1<<endl; break; } } if(!is_out){ if(!tryed[4] || !tryed[5] || !tryed[6]) fout<<5<<endl; else if(!tryed[7]) fout<<6<<endl; else fout<<7<<endl; } return 0; }
本题很简单,就是图形变换,找出变换前后的坐标关系就行了。还有怎样排除不可能的变换形式,要思考清楚。我是逐步遍历,对每一个bimage[i][j],逐一验证各个变换规则,如果不满足的就标记,下次就不用再验证它了。没有被标记的就是正确的转换。另外,对于可能有多种遍历规则的,输出最小的一个变换规则的编号,测试过程中再次审题。
相关文章推荐
- C++_USACO_从文件读出两数,相加输出到另一个文件
- USACO1.2.2--Transformations
- [USACO]Transformations
- C++——USACO Section 1.4 题解
- C++——USACO Section 1.1 题解
- C++&Pascal——【USACO 3.3.1】——Riding the Fences
- C++——【USACO 4.1.1】——Beef McNuggets
- usaco 1-2-2 Transformations
- C++——【USACO 5.3.2】——Window Area
- C++_USACO_Broken Necklace
- C++_USACO_Dual Palindromes
- USACO--Transformations
- C++——USACO Section 1.5 题解
- USACO Section 1.2 : Transformations
- C++&Pascal——【USACO 3.3.2】——Shopping Offers
- C++——【USACO 4.3.2】——Street Race
- usaco Transformations (矩形翻转||模拟题)
- 【几何翻转】Transformations 方块转换(Usaco_Training 1.2)
- C++动态规划算法之数字金字塔【USACO TRAINING】:一道经典的数塔问题
- C++——USACO Section 3.1 题解