题意:计算一个矩阵里四个角是同一个字母的矩形个数
思路:枚举行号,看两行里对应地方字母相同的列有几个,然后按组合数计算。
代码:
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<map>
#include<cmath>
#include<assert.h>
#include<iomanip>
#include<assert.h>
using namespace std;
typedef long long ll;
char mp[255][255];
int cnt[5];
int main()
{
// freopen("data.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i){
scanf("%s",mp[i]);
}
int ans=0;
for(int i=0;i<n;++i){
for(int j=i+1;j<n;++j){
cnt[0]=cnt[1]=cnt[2]=cnt[3]=cnt[4]=0;
for(int k=0;k<m;++k){
if(mp[i][k]==mp[j][k]){
if(mp[i][k]=='B')cnt[0]++;
else if(mp[i][k]=='J')cnt[1]++;
else if(mp[i][k]=='H')cnt[2]++;
else if(mp[i][k]=='Y')cnt[3]++;
else if(mp[i][k]=='N')cnt[4]++;
}
}
for(int i=0;i<5;++i){
ans+=(cnt[i]*(cnt[i]-1)/2);
}
}
}
printf("%d\n",ans);
}
return 0;
}