71分求救
查看原帖
71分求救
936407
Oldxu114514楼主2024/7/25 12:36
#include<bits/stdc++.h>
using namespace std;
int n;
char a[11][11];
char b[11][11];
char c[11][11];
char d[11][11];
void copy(){
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            c[i][j]=a[i][j];
        }
    }
}
bool same()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(d[i][j]!=b[i][j])
            {
                return false;
            }
        }
    }
    return true;
}
bool all_same()
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(b[i][j]!=a[i][j])
            {
                return false;
            }
        }
    }
    return true;
}
int judge()
{
    // 旋转90、180、270度的判断
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[j][n-i+1]=c[i][j];
        }
    }
    if(same())
    {
        return 1;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[n-i+1][n-j+1]=c[i][j];
        }
    }
    if(same())
    {
        return 2;
    }
//    for(int i=1;i<=n;i++)
//    {
//        for(int j=1;j<=n;j++)
//        {
//            cout<<d[i][j];
//        }
//        cout<<endl;
//    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[n-j+1][i]=c[i][j];
        }
    }
    if(same())
    {
        return 3;
    }
    // 水平方向翻转的反射判断
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[i][n-j+1]=c[i][j];
        }
    }
    if(same())
    {
        return 4;
    }
    // 水平方向翻转的反射判断与90度、180度、270度的旋转判断
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[i][n-j+1]=c[i][j];
        }
    }
	for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            d[i][j]=c[j][n-i+1];
        }
    }
//    for(int i=1;i<=n;i++)
//    {
//    	for(int j=1;j<=n;j++)
//    	{
//    		cout<<d[i][j]<<" ";
//		}
//		cout<<endl;
//	}
    if(same())
    {
        return 5;
    }
    else
    {
        for(int i=1;i<=n;i++)
	    {
	        for(int j=1;j<=n;j++)
	        {
	            d[i][j]=c[j][n-i+1];
	        }
	    }
        if(same())
        {
            return 5;
        }
        else
        {
            for(int i=1;i<=n;i++)
		    {
		        for(int j=1;j<=n;j++)
		        {
		            d[i][j]=c[j][n-i+1];
		        }
		    }
            if(same())
            {
                return 5;
            }
        }
        if(all_same())
        {
        	return 6;
		}
    }
    return 7;
}


int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>b[i][j];
        }
    }
    copy();
    cout<<judge()<<endl;
}
2024/7/25 12:36
加载中...