大佬求助!本地测试正常洛谷全RE
查看原帖
大佬求助!本地测试正常洛谷全RE
231006
Wodetian132楼主2024/7/27 14:23

本地测试样例过了,找了一个测试点也过了,但是上传评测就全是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;
}
2024/7/27 14:23
加载中...