WA #000 & #017 求调
查看原帖
WA #000 & #017 求调
649114
50lty12楼主2023/12/19 13:56
#include<bits/stdc++.h>
using namespace std;
const int N=7;
int n,m,ans=1e9;
int a[N][N],b[N][N],h[N],w[N],aa[N][N];
bool check(){
	for(int i=1; i<=n; i++){
		for(int j=1; j<=m; j++){
			aa[i][j]=a[h[i]][w[j]];
			if(aa[i][j]^b[i][j]) return 0;
		}
	}
	return 1;
} 
int calc(){
	int sum=0;
	for(int i=1; i<=n; i++){
		for(int j=i+1; j<=n; j++){
			if(h[i]>h[j]) sum++;
		}
	}
	for(int i=1; i<=m; i++){
		for(int j=i+1; j<=m; j++){
			if(w[i]>w[j]) sum++;
		}
	}
	return sum;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n; i++){
		for(int j=1; j<=m; j++) scanf("%d",&a[i][j]);
	}
	for(int i=1; i<=n; i++){
		for(int j=1; j<=m; j++) scanf("%d",&b[i][j]);
	}
	for(int i=1; i<=n; i++) h[i]=i;
	for(int i=1; i<=m; i++) w[i]=i;
	if(check()) ans=min(ans,calc());
	while(next_permutation(h+1,h+1+n)){
		while(next_permutation(w+1,w+1+m)){
			if(check()) ans=min(ans,calc());
		}
	}
	if(ans!=1e9) printf("%d\n",ans);
	else puts("-1");
	return 0;
} 
2023/12/19 13:56
加载中...