题意:求所给的图,形成的举形的个数,单个点也算一个矩形。
解题思路:(枚举) 找到一个点,就去统计它左上角与他形成的举行的数目,先往左找,找不下去了,然后往上找,直到结束。
#include<stdio.h>
#include<iostream>
using namespace std;
#define N 200
int n;
char map[N][N];
int dfs(int x,int y)
{
int sum=0,left=1;
for(int i=x;i>=1;i--) //向上
{
if(map[i][y]!='.')
break;
for(int j=y;j>=left;j--) //向左
{
if( map[i][j]=='.' )
{
sum++;
}
else
{
left=j+1; //记录最左边的点
break;
}
}
}
return sum;
}
int main()
{
int i,j;
while(scanf("%d",&n)!=EOF)
{
for( i=1;i<=n;i++)
for( j=1;j<=n;j++)
cin>>map[i][j];
int ans=0;
for( i=1;i<=n;i++)
for( j=1;j<=n;j++)
if(map[i][j]=='.')
{
ans+=dfs(i,j);
// printf("%d\n",ans);
}
printf("%d\n",ans);
}
return 0;
}
杭电 1510 枚举
最新推荐文章于 2020-05-01 21:50:49 发布