代码复杂度 O(m3n),用 map 做的,感觉没啥问题,但交上去只 AC 了一个点。求助dalao来帮我调一下代码 qwq。
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
unordered_map<string,bool> vis;
char a[531][131],b[531][131];
bool check(int x,int y,int z){
vis.clear();
for(int i=1;i<=n;i++){
string s="";
s+=a[i][x]+a[i][y]+a[i][z];
vis[s]=1;
}
for(int i=1;i<=n;i++){
string s="";
s+=b[i][x]+b[i][y]+b[i][z];
if(vis[s]) return 0;
}
return 1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>b[i][j];
for(int i=1;i<=m;i++)
for(int j=i+1;j<=m;j++)
for(int k=j+1;k<=m;k++)
if(check(i,j,k)) ans++;
cout<<ans;
return 0;
}