纯暴力!
样例AC CODE:
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<set>
using namespace std;
set<string> str[16385];
char mapn[130][130];
char tmp[16385];
string getStr(int a_s,int a_e,int b_s,int b_e)
{
int num=0;
for(int i=a_s; i<=a_e; i++)
{
for(int j=b_s; j<=b_e; j++)
{
tmp[num++]=mapn[i][j];
}
tmp[num++]='|';
}
tmp[num]='\0';
string ss=tmp;
return ss;
}
int main()
{
int T,n,m;
scanf("%d",&T);
for(int ii=1; ii<=T; ii++)
{
scanf("%d %d",&n,&m);
for(int i=1; i<=n*m; i++)
str[i].clear();
getchar();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
scanf("%c",&mapn[i][j]);
}
getchar();
}
int a,b,c,d;
for(a=1;a<=n;a++)
{
for(b=a;b<=n;b++)
{
for(c=1;c<=n;c++)
{
for(d=c;d<=m;d++)
{
int index=(b-a+1)*(d-c+1);
str[index].insert(getStr(a,b,c,d));
}
}
}
}
int sum=0;
for(int i=1; i<=n*m; i++)
sum+=str[i].size();
printf("Case #%d: %d\n",ii,sum);
}
return 0;
}
排队了好久,最后TLE了 蛋裂!!!