第一次尝试写acm的博客,想学别人,把自己写的代码上传上来。
哈哈,但愿有一天我能成为一名acm大神。
在此之前,就先认真的刷刘汝佳的这本书和uva吧!!
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define maxn 15
int H[maxn][maxn];
int V[maxn][maxn];
int judge(int ini,int inj,int len)
{
int i;
for(i=0;i<=len-1;i++){
if(H[ini][inj+i]==0) {return 0;};
}
for(i=0;i<=len-1;i++){
if(V[ini+i][inj+len]==0) return 0;
}
for(i=0;i<=len-1;i++){
if(H[ini+len][inj+i]==0) return 0;
}
for(i=0;i<=len-1;i++){
if(V[ini+i][inj]==0) return 0;
}
return 1;
}
int main(){
//freopen("input.txt", "r",stdin);
int n,m;
int tout=0;
int tstar=0;
while(scanf("%d",&n)!=EOF){
memset(H,0,sizeof(H));
memset(V,0,sizeof(V));
scanf("%d",&m);
getchar();
char ch;
int a,b;
int count[15];
memset(count,0,sizeof(count));
int flag=0;
for(int i=0;i<m;i++)
{
scanf("%c %d %d",&ch,&a,&b);
getchar();
if(ch=='H') H[a][b]=1;
if(ch=='V') V[b][a]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
for(int k=1;k<=n-i;k++)
{
if(judge(j,k,i))
{
//printf("%d,%d,%d\n",j,k,i);
flag=1;count[i]++;
}
}
}
}
if(tstar++) printf("\n**********************************\n\n");
printf("Problem #%d\n\n",tstar);
if(flag==0) printf("No completed squares can be found.\n");
if(flag==1){
for(int i=1;i<=n;i++){
if(count[i]!=0) printf("%d square (s) of size %d\n",count[i],i);
}
}
}
return 0;
}