ZOJ2975 Kinds of Fuwas

来源:互联网 发布:windows 调试模式 编辑:程序博客网 时间:2024/06/10 01:11


枚举 i 列和 j 列,统计(第 k 行 i 列) 和 (第 k 行 j 列) 相等的数目,再用组合公式算出符合的矩形的个数


#include<cstdio>#include<cstring>int fun(char c){if(c=='B') return 0;if(c=='J') return 1;if(c=='H') return 2;if(c=='Y') return 3;return  4;}int main(){#ifdef TESTfreopen("in.in","r",stdin);#endifint t,n,m;char s[260][260];int num[5];scanf("%d",&t);while(t--){int ans=0;scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%s",s[i]);/*for(int i=0;i<n-1;i++)//暴力超时{for(int j=0;j<m-1;j++){for(int k=j+1;k<m;k++){if(s[i][j]!=s[i][k]) continue;for(int l=i+1;l<n;l++){if(s[i][j]==s[l][j] && s[i][j]==s[l][k])ans++;}}}}*/for(int i=0;i<m-1;i++){for(int j=i+1;j<m;j++){memset(num,0,sizeof(num));for(int k=0;k<n;k++){if(s[k][i]==s[k][j]) num[fun(s[k][i])]++;}for(int l=0;l<5;l++){ans+=num[l]*(num[l]-1)/2;}}}printf("%d\n",ans);}}




0 0
原创粉丝点击