【UVA】201 Squares(模拟)

题目

题目
 


分析

记录一下再预处理一下。
 


代码

#include <bits/stdc++.h>
int main()
{
	int t=0,s,n;
	while(scanf("%d",&s)==1)
	{
		if(t!=0) printf("
**********************************

");
		int ans[11],H[21][21],V[21][21];
		memset(V,0,sizeof(V));memset(H,0,sizeof(H));memset(ans,0,sizeof(ans));
		scanf("%d",&n);
		for(int k=0;k<n;k++)
		{
			char s1[5];
			int i,j;
			scanf("%s%d%d",s1,&i,&j);
			if(s1[0]=='H') H[i][j]=1;
			else V[j][i]=1;
		}
		for(int k=1;k<=s;k++)
		{
			for(int i=1;i<=s;i++)
			for(int j=1;j<=s;j++)
			{
				int flag=1;
				for(int h=j;h<j+k;h++)
					if(!H[i][h] || !H[i+k][h]) flag=0;
				for(int h=i;h<i+k;h++)
				 	if(!V[h][j] || !V[h][j+k]) flag=0;
				ans[k]+=flag;
			}
		}
		printf("Problem #%d

",++t);
		bool flag=true;
		for(int i=1;i<=s;i++)
		{
			if(ans[i]>0)
			{
				flag=false;
				printf("%d square (s) of size %d
",ans[i],i);
			}
		}
		if(flag) printf("No completed squares can be found.
");
	}
	return 0;
}
原文地址:https://www.cnblogs.com/noblex/p/7881508.html