P1205 [USACO1.2] 方块转换 Transformations
为什么GCC 9 的测评和C++98的测评分数不一样,更重要的是把错误的样例点下载下来在自己的机子上跑就没错。
但是在自己的机子上跑就AK了
附上源代码(3个测评用的都是这个源代码)
#include<bits/stdc++.h>
using namespace std;
char a[11][11],b[11][11],f[11][11];
int n;
int xz(){
bool d=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=f[n-j+1][i];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j]!=b[i][j]) d=0;
}
}
if(d) return 1;d=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=f[n-j+1][i];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j]!=b[i][j]) d=0;
}
}
if(d) return 2;d=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=f[n-j+1][i];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j]!=b[i][j]) d=0;
}
}
if(d) return 3;
return 0;
}
int fz(){
bool d=true;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) f[i][j]=a[i][n-j+1];
}
/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) cout<<a[i][j];
cout<<endl;
}*/
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(f[i][j]!=b[i][j]) {d=0;break;}
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) a[i][j]=f[i][j];
if(d) return 4;
int ans=xz();
if(ans) return 5;
}
int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int ans;bool d=true;
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];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(b[i][j]!=a[i][j]){
d=false;
break;
}
}
if(d){
cout<<6;
return 0;
}
ans=xz();
if(ans){
cout<<ans;
return 0;
}
ans=fz();
if(ans){
cout<<ans;
return 0;
}
cout<<7;
/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) cout<<a[i][j];
cout<<endl;
}
*/
return 0;
}