本地测试样例过了,找了一个测试点也过了,但是上传评测就全是RE。
本地结果

上传后结果

源代码如下(含少量注释)(大佬别生气,请您过目)
#include<cstdio>
#include<iostream>
using namespace std;
int a[15][15],b[15][15],c[15][15],d[15][15];
//a为初始,b为要求的结果,c为中间变量,d为操作后的结果
int n = 0;//控制行列数
int i = 1,j = 1;//用于for循环遍历数组
bool zhuan(){ //操作旋转90°
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
c[j][n-i+1] = d[i][j];
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
d[i][j] = c[i][j];
}
bool fanz(){//操作翻转
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
c[i][n-j+1] = a[i][j];
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
d[i][j] = c[i][j];
}
bool compare()//将操作结果和要求结果比较
{
int sum = 0;
for(i=1 ; i<=n ; i++)
for(j=1 ; j<=n ; j++)
if(b[i][j] != d[i][j]) sum++;
if(sum == 0) return true;
else return false;
}
int main()//主函数
{
char c;
scanf("%d",&n);
for(i=1 ; i<=n ; i++)//读入原始数组
for(j=1 ; j<=n ; j++)
{
scanf("%c",&c);
if(c == 64)
{
a[i][j] = 1;
d[i][j] = 1;
}
else if(c != 45 &&c != 64) j--;
}
for(i=1 ; i<=n ; i++)//读入要求数组
for(j=1 ; j<=n ; j++)
{
scanf("%c",&c);
if(c == 64)
b[i][j] = 1;
else if(c != 45 &&c != 64) j--;
}
for(int cs=1 ; cs<=3 ; cs++)//尝试旋转三次
{
zhuan();
if(compare())
{
printf("%d",cs);
return 0;
}
}
fanz();//翻转一次(用原数组)
if(compare())
{
printf("4");
return 0;
}
for(int cs=1 ; cs<=3 ; cs++)//在翻转后旋转三次试试
{
zhuan();
if(compare())
{
printf("5");
return 0;
}
}
for(i=1 ; i<=n ; i++)//试试不操作的比较
for(j=1 ; j<=n ; j++)
d[i][j] = a[i][j];
if(compare())
{
printf("6");
return 0;
}
printf("7");//无法达到结果,输出7
return 0;
}