P1205 [USACO1.2]方块转换 Transformations
AC代码
#include<bits/stdc++.h>
using namespace std;
char c[20][20];
char s[20][20];
char f[20][20];
  int T;
bool judge1()
{
    int k=1,l=T;
     for(int i=1;i<=T;++i)
       for(int j=1;j<=T;++j)
      {
         if(c[i][j]!=s[k][l]) return 0;
         ++k;
         if(k==T+1) { k=1;--l;}
       }
       return 1;
 
}
bool judge2()
{
    int k=T,l=T;
     for(int i=1;i<=T;++i)
        for(int j=1;j<=T;++j)
    {
        if(c[i][j]!=s[k][l])   return 0;
        --l;
        if(l==0) {
            k--;l=T;
        }
    }
    return 1;
}
bool judge3()
{
    int k=T,l=1;
    for(int i=1;i<=T;++i)
        for(int j=1;j<=T;++j)
    {
        if(c[i][j]!=s[k][l]) return 0;
        k--;
        if(k==0) {
            k=T;l++;
        }
    }
    return  1;
}
bool judge4()
{
    for(int i=1;i<=T;++i)
    {
        string s1(c[i]+1,c[i]+T+1);
        string s2(s[i]+1,s[i]+T+1);
        reverse(s1.begin(),s1.end());
        if(s1!=s2) return 0;
 
    }
    return 1;
}
bool judge5()
{
    int k=1,l=T;
    for(int i=1;i<=T;++i)
       for(int j=1;j<=T;++j)
       {
           f[k][l]=c[i][j];
           l--;
            if(l==0) {
                l=T;k++;
            }
       }
       for(int i=1;i<=T;++i)
           for(int j=1;j<=T;++j)
            c[i][j]=f[i][j];
 
            if(judge1()) return 1;
            if(judge2())  return 1;
            if(judge3())  return 1;
            return 0;
 
 
 
 
 
}
int main()
{
  cin>>T;
  for(int i=1;i<=T;++i)
    for(int j=1;j<=T;++j)
  {
     cin>>c[i][j];
  }
  for(int i=1;i<=T;++i)
    for(int j=1;j<=T;++j)
  {
     cin>>s[i][j];
  }
    bool r1=1;
    for(int i=1;i<=T;++i)
      for(int j=1;j<=T;++j)
        if(c[i][j]!=s[i][j]) {r1=0;break;}
  if(judge1())  {cout<<1<<endl;return 0;}
  if(judge2())  {cout<<2<<endl;return 0;}
  if(judge3())  {cout<<3<<endl;return 0;}
  if(judge4())  {cout<<4<<endl;return 0;}
  if(judge5())  {cout<<5<<endl;return 0;}
  if(r1==1)      {cout<<6<<endl;return 0;}
  cout<<7<<endl;
  return  0;
 
 
 
 
}

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号