1 solutions

  • 0
    @ 2025-12-3 17:21:29

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int n,tmp,ans=1800;
    char a[55][55],b[55][55],c[55][55],d[55][55];
    int find(char a[55][55],char b[55][55])
    {
    	int xx=0;
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			if(a[i][j]=='X' || b[i][j]=='X') xx++;
    //	cout<<xx<<endl;
    	return xx;
    }
    void zhuan(char a[55][55],char b[55][55])
    {
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			b[i][j]=a[n-j+1][i];
    }
    void fan(char a[55][55],char b[55][55])
    {
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			b[i][j]=a[i][n-j+1];	
    }
    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];
    			c[i][j]=b[i][j];				
    		}
    	tmp=find(a,c);ans=min(ans,tmp);
    	zhuan(c,d);
    	tmp=find(a,d);ans=min(ans,tmp);	
    	zhuan(d,c);
    	tmp=find(a,c);ans=min(ans,tmp);	
    	zhuan(c,d);
    	tmp=find(a,d);ans=min(ans,tmp);		
    	fan(b,c);
    	tmp=find(a,c);ans=min(ans,tmp);
    	zhuan(c,d);
    	tmp=find(a,d);ans=min(ans,tmp);	
    	zhuan(d,c);
    	tmp=find(a,c);ans=min(ans,tmp);	
    	zhuan(c,d);
    	tmp=find(a,d);ans=min(ans,tmp);	
    	cout<<ans;	
        return 0;
    }
    /*
    3
    ...
    ..X
    ...
    X..
    ...
    ...
    */
    
    • 1

    Information

    ID
    994
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By