提示WA后,我把第二个数据下载了下来,自己运行之后,发现我的结果和官方给的结果一样,为什么说我错了呢?
#include<cstdio>
#include<cstring>
#define r(i,a,b) for(register int i=a;i<=b;i++)
using namespace std;char c[11][11],mb[11][11],tmp[11][11];int n;
inline bool change1(){r(i,1,n)r(j,1,n)if(mb[j][n-i+1]!=c[i][j]) return false;return true;}
inline bool change2(){r(i,1,n)r(j,1,n)if(mb[n-i+1][n-j+1]!=c[i][j]) return false;return true;}
inline bool change3(){r(i,1,n)r(j,1,n)if(mb[n-j+1][i]!=c[i][j]) return false;return true;}
inline bool change4(){r(i,1,n)r(j,1,n)if(mb[i][n-j+1]!=c[i][j]) return false;return true;}
inline bool change5(){r(i,1,n)r(j,1,n)c[i][j]=tmp[i][n-j+1];return change1()||change2()||change3();}
inline bool change6(){r(i,1,n)r(j,1,n)if(mb[i][j]!=c[i][j]) return false;return true;}
signed main()
{
scanf("%d\n",&n);
r(i,1,n) gets(c[i]+1);
r(i,1,n) gets(mb[i]+1);
if(change1()) return puts("1")&0;
if(change2()) return puts("2")&0;
if(change3()) return puts("3")&0;
if(change4()) return puts("4")&0;
memcpy(tmp,c,sizeof(tmp));
if(change5()) return puts("5")&0;
memcpy(c,tmp,sizeof(c));
if(change6()) return puts("6")&0;
puts("7");
}
https://blog.csdn.net/weixin_44686648/article/details/93399267
这篇有讲,是因为环境不同,换行符的不同导致的错误
我也错懵了...
是不是你的输出格式
刚刚我用洛谷的在线ide运行我的代码,发现同样的代码,同样的输入,在线IDE运行结果与在本地运行的结果不一样。
题目地址: [USACO1.2]方块转换 Transformations - 洛谷 https://www.luogu.com.cn/problem/P1205
下面是我的代码
#include <stdio.h>
int main(){
int n;
char data[10][10] = { 0 }, dest[10][10] = { 0 },
tmp[10][10] = { 0 };
scanf("%d\n", &n);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
scanf("%c", &data[i][j]);
}
getchar();
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
scanf("%c", &dest[i][j]);
}
getchar();
}
//1
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[j][n - i - 1] = data[i][j];
}
}
int flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("1\n");
return 0;
}
//2
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[n - i - 1][n - j - 1] = data[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("2\n");
return 0;
}
//3
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[n - j - 1][i] = data[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("3\n");
return 0;
}
//4
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[i][n - j - 1] = data[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("4\n");
return 0;
}
//5-1
char temp[10][10] = { 0 };
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
temp[i][n - j - 1] = data[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[j][n - i - 1] = temp[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("5\n");
return 0;
}
//5-2
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
temp[i][n - j - 1] = data[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[n - i - 1][n - j - 1] = temp[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("5\n");
return 0;
}
//5-3
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
temp[i][n - j - 1] = data[i][j];
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
tmp[n - j - 1][i] = temp[i][j];
}
}
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (tmp[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("5\n");
return 0;
}
//6
flag = 1;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (data[i][j] != dest[i][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("6\n");
return 0;
}
printf("7\n");
return 0;
}