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
![](https://images2015.cnblogs.com/blog/1101696/201703/1101696-20170329191005920-1031767184.png)
1 #include2 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<