前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面积问题最简做法

面积问题最简做法

作者头像
attack
发布2018-04-12 15:39:35
1K0
发布2018-04-12 15:39:35
举报

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

【样例输入】area.in

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

【样例输出】area.out

15

代码语言:javascript
复制
 1 #include<iostream>
 2 using namespace std;
 3 int xx[5]={-1,+1,0,0};
 4 int yy[5]={0,0,-1,+1};
 5 int a[101][101];
 6 void dfs(int i,int j)
 7 {
 8     a[i][j]=1;
 9     for(int k=0;k<4;k++)
10     {
11         int x=i+xx[k];
12         int y=j+yy[k];
13         if(x>=1&&x<=10&&y>=1&&y<=10&&a[x][y]==0)
14         {
15             
16             dfs(x,y);
17         }
18     }
19 }
20 int main()
21 {
22     for(int i=1;i<=10;i++)
23     {
24         for(int j=1;j<=10;j++)
25         {
26             cin>>a[i][j];
27         }
28     }
29     for(int i=1;i<=10;i++)
30     {
31         if(a[1][i]==0)
32         {
33             dfs(1,i);
34         }
35         if(a[i][1]==0)
36         {
37             dfs(i,1);
38         }
39         if(a[10][i]==0)
40         {
41             dfs(10,i);
42         }
43         if(a[i][10]==0)
44         {
45             dfs(i,10);
46         }
47     }
48     int tot=0;
49     for(int i=1;i<=10;i++)
50     {
51         for(int j=1;j<=10;j++)
52         {
53             if(a[i][j]==0)
54             tot++;
55         }
56     }
57     cout<<tot;
58     return 0;
59 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档