码迷,mamicode.com
首页 > 其他好文 > 详细

围成面积

时间:2017-12-10 21:36:19      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:show   img   queue   alt   str   内存   names   输入   include   

围成面积

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1359
时间限制: 1000 ms         内存限制: 65536 KB
 

【题目描述】

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

技术分享图片

 

【输入】

10×10的图形。

【输出】

输出面积。

【输入样例】

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

【输出样例】

15
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int a[105];
bool b[105];
int zl[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int mp[15][15];
struct node{
    int x,y;
    node():x(),y(){}
    node(const int x,const int y):x(x),y(y){}
};
queue <node>Q;
int t=1,ans;
void bfs(int x,int y)
{
    mp[x][y]=++t;
    a[t]++;
    Q.push(node(x,y));
    while(!Q.empty())
    {
        node u=Q.front();
        Q.pop();
        for(int i=0;i<4;i++)
        {
            int xx=u.x+zl[i][0],yy=u.y+zl[i][1];
            if(xx>0&&xx<=10&&yy>0&&yy<=10&&!mp[xx][yy])
            {
                mp[xx][yy]=t;
                a[t]++;
                Q.push(node(xx,yy));
            }
        }
    }
}
int main()
{
    for(int i=1;i<=10;i++)
        for(int j=1;j<=10;j++)
            cin>>mp[i][j];
    for(int i=1;i<=10;i++)
        for(int j=1;j<=10;j++)
        if(!mp[i][j])
            bfs(i,j);
    for(int i=1;i<=10;i++)b[mp[i][1]]=1;
    for(int i=1;i<=10;i++)b[mp[i][10]]=1;
    for(int i=1;i<=10;i++)b[mp[10][i]]=1;
    for(int i=1;i<=10;i++)b[mp[1][i]]=1;
    for(int i=2;i<=9;i++)
        for(int j=2;j<=9;j++)
            if(!b[mp[i][j]]&&mp[i][j]!=1)
            {
                b[mp[i][j]]=1;
                ans+=a[mp[i][j]];
            }
            
    cout<<ans<<endl;

}

 

围成面积

标签:show   img   queue   alt   str   内存   names   输入   include   

原文地址:http://www.cnblogs.com/EdSheeran/p/8017901.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!