Problem A: 面积(area)

Problem A: 面积(area)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 739  Solved: 222
[Submit] [Status] [Web Board] [Creator:]

Description

编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如下图所示,在 10*10 的二维数组中,有“*”围住了 15 个点,因此面积为 15。上下左右4个方向



Sample Input Copy

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 1 1 1 0 0 0 
0 0 0 0 1 0 0 1 0 0 
0 0 0 0 0 1 0 0 1 0 
0 0 1 0 0 0 1 0 1 0 
0 1 0 1 0 1 0 0 1 0 
0 1 0 0 1 1 0 1 1 0 
0 0 1 0 0 0 0 1 0 0 
0 0 0 1 1 1 1 1 0 0 
0 0 0 0 0 0 0 0 0 0

Sample Output Copy

15

HINT

#include<bits/stdc++.h>
using namespace std;
int 
int head=1,tail=1;
void bfs(int x,int y)  //以下队列写法
{
queue<pair<int,int> >q;
q.push(make_pair(x,y));
a[x][y]=1;
    while(!q.empty())
    {
        for(int )
        {
            int k=q.front().first+dx[c];
            int l=q.front().second+dy[c];
            if(k>=1 && k<=b && l>=1 && l<=b && a[k][l]==0)
            {
                a[k][l]=1;
                q.push({k,l});
            }
        }
        q.pop();
    }
}
int main()
{
int z=0;
    for(int i=1;i<=10;i++)
    {
        if()bfs();
        if()bfs();
        if()bfs();
        if()bfs();
    }       
    for(int i=1;i<=10;i++)
    {
    for(int j=1;j<=10;j++)
    {
    if(a[i][j]==0)z++;
}
}
    cout<<z;
    return 0; 
}

*********************以下数组
int head=1,tail=1;
void bfs(int x,int y)
{
    
    g[1]=x;
    h[1]=y;
    //q[1]=0;
    while(head<=tail)
    {
        for(int )
        {
            int k=g[head]+dx[c];
            int l=h[head]+dy[c];
            if(k>=1 && k<=b && l>=1 && l<=b && a[k][l]==0)
            {
            tail++;
                a[k][l]=1;
                g[tail]=k;
                h[tail]=l;
            }
        }
        head++;
    }
}
int main()
{
int i,j,s=0;
     for(i=1;i<=10;i++)
        for(j=1;j<=10;j++)cin>>a[i][j];
    for(i=1;i<=10;i++)
    {
        if()bfs();
        if()bfs();
        if()bfs();
        if()bfs();
    }       
   
    return 0; 
}