<img src="https://img-blog.csdn.net/20160801141032344?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img src="https://img-blog.csdn.net/20160801141058862?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20160801141105128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<pre name="code" class="cpp">#include<stdio.h>
int main(void)
{
// freopen("C:\\Users\\5201\\Desktop\\IN.txt","r",stdin);
// freopen("C:\\Users\\5201\\Desktop\\IOUT.txt","w",stdout);
int n,p=0;
while(~scanf("%d",&n))
{
int sum,x,y,m,a[15]={0},H[10][10]={0},V[10][10]={0}; //a数组里下标是正方形大小,存的是正方形个数
//H,V分别存横纵坐标
char c;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
getchar(); //读上个换行符
scanf("%c %d %d",&c,&x,&y);
if(c=='H')
H[x][y]=1; //读到的标记为1
else
V[y][x]=1;
}
if(p)
printf("\n**********************************\n\n");
printf("Problem #%d\n\n",++p);
sum=0;
for(int i=1;i<=n;i++) //i表示边长
{
for(int j=1;j<=n;j++) //点横坐标
{
for(int k=1;k<=n;k++) //点纵坐标
{
int f=1;
for(int t=0;t<i;t++)
{
if(H[j][k+t]==0||H[j+i][k+t]==0||V[j+t][k]==0||V[j+t][k+i]==0)//如果该正方形边长为零结束
{
f=0;
break;
}
}
if(f==1)
a[i]++;
}
}
if(a[i])
sum++; //记不同大小正方形的种类数
}
if(sum==0) //一种都没输出结果
printf("No completed squares can be found.\n");
else
{
for(int i=0;i<15;i++)
{
if(a[i])
printf("%d square (s) of size %d\n",a[i],i);
}
}
}
return 0; //结束 name:邱新磊
}