UVALive 4264 Message(Regionals 2008 :: Asia

【题目链接】:click here~~

【题目大意】给你n个10*10 的01组成的图像,再给你一个匹配图像,其中匹配图像可以看做是前面n个图像通过0,90,270,360度旋转得到,其中如果图像失真数小于20以内可以忽略,问匹配图像可以由前面那几个图像旋转得到。

【思路】:比赛的时候由没有看清楚题意,,其实看懂了题目就很简单,直接模拟即可。

代码:

/** Problem: UVALive 4264* Running time: 46MS* Complier: G++* Author: javaherongwei* Create Time: 20:16 2015/10/14 */#include <bits/stdc++.h>using namespace std;const int maxn=111;const int inf=0x3f3f3f3f;inline int max(int a,int b){return a>b?a:b;}inline int min(int a,int b){return a<b?a:b;}int alpq[maxn][11][11];int a[11][11];void Rotate(){int c[11][11];for(int i=1; i<=10; ++i)for(int j=1; j<=10; ++j)c[10-j+1][i]=a[i][j];for(int i=1; i<=10; ++i)for(int j=1; j<=10; ++j)a[i][j]=c[i][j];}int Function(int b[11][11]){int s=0;for(int i=1; i<=10; ++i)for(int j=1; j<=10; ++j)if(b[i][j]!=a[i][j]) s++;return s;}int main(){//freopen("1.txt","r",stdin);int t;while(cin>>t&&t){char op[65];for(int k=1; k<=t; ++k){cin>>op[k];for(int i=1; i<=10; ++i)for(int j=1; j<=10; ++j)scanf("%1d",&alpq[k][i][j]);}int tt,res;cin>>tt;for(int k=1; k<=tt; ++k){for(int i=1; i<=10; ++i)for(int j=1; j<=10; ++j)scanf("%1d",&a[i][j]);for(int i=1; i<=t; ++i)//枚举t个原来的图像{for(int z=1; z<=4; ++z)//枚举四个旋转方向{int ck=Function(alpq[i]);if(ck<=20){res=i;}Rotate();}}printf("%c",op[res]);}cout<<endl;} return 0;}/*Sample Input2a0000000000011111111001111100110111111100000011000000001100000001111100001111111000000000000000000000X01100001100110000110001100110000110011000001111000000111100000110011000011001100011000011001100001103011000011001100001100011001100001100110000011110000001111000001100110000110011000110000110011000011000000000001100000011111100111100111111000000110000000011000000111111001111001111110000001100000000000000000000000000111011100011100000110001001111111000111111100011001010001100101000100001100000000010Sample OutputXXa*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

含泪播种的人一定能含笑收获。

UVALive 4264 Message(Regionals 2008 :: Asia

相关文章:

你感兴趣的文章:

标签云: