关于#2
查看原帖
关于#2
1042960
a_little_carrot楼主2024/4/24 21:19

代码

#include<bits/stdc++.h>
using namespace std ;
int n ;
char ch ;
int a[12][12],b[12][12],c[12][12] ;
void f() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		b[i][j]=a[i][j] ;
}
bool check() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		if(b[i][j]!=c[i][j])
	 			return 0 ;
	return 1 ;
}
bool turn90() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		b[j][n-i+1]=a[i][j] ;
	return check() ;
}
bool turn180() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		b[n-i+1][n-j+1]=a[i][j] ;
	return check() ;
}
bool turn270() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		b[n-j+1][i]=a[i][j] ;
	return check() ;
}
bool _swap() {
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j)
	 		b[i][n-j+1]=a[i][j] ;
	return check() ;
}
bool do_nothing() {
	return check() ;
}
bool zuhe() {
	_swap() ;
	if(turn90())return 1 ;
	f() ;
	_swap() ;
	if(turn180())return 1 ;
	f() ;
	_swap() ;
	if(turn270())return 1 ;
	return 0 ;
}
int main() {
	cin>>n ;
	for(int i=1;i<=n;++i) {
		for(int j=1;j<=n;++j) {
	 		cin>>ch ;
	 		a[i][j]=(ch=='@') ;
	 	}
	}for(int i=1;i<=n;++i) {
		for(int j=1;j<=n;++j) {
	 		cin>>ch ;
	 		c[i][j]=(ch=='@') ;
	 	}
	}
	f() ;
	if(turn90()) {
		cout<<1 ;
		f() ;
	}else if(turn180()) {
		cout<<2 ;
		f() ;
	}else if(turn270()) {
		cout<<3 ;
		f() ;
	}else if(_swap()) {
		cout<<4 ;
		f() ;
	}else if(zuhe()) {
		cout<<5 ;
		f() ;
	}else if(do_nothing()) {
		cout<<6 ;
	}else {
		cout<<7 ;
	}
	return 0 ;
}

#2的数据下载下来是

5
-@@@-
-@@--
-@---
-----
-----
-----
----@
---@@
--@@@
-----

按理来说输出是 7

但是实际上输出是 5

2024/4/24 21:19
加载中...