求面积

/*根据题目要求没有干扰的1
所以只要扫到0就把他变成1
当扫到1的时候就停止
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cstring>
using namespace std;
int a[11][11];
void mdzz(int x,int y)
{
    if(x<1||y<1||y>10||x>10||a[x][y]==1);
    else 
    {
        a[x][y]=1;
        mdzz(x+1,y);
        mdzz(x-1,y);
        mdzz(x,y+1);
        mdzz(x,y-1);
    }
    return;
}
int main()
{
    int tot=0;
    for(int i=1;i<=10;i++)
      for(int j=10;j>=1;j--)
        {
            scanf("%d",&a[i][j]);
        }
    mdzz(1,1);
    mdzz(1,10);
    mdzz(10,1);
    mdzz(10,10);
    for(int i=1;i<=10;i++)
      for(int j=10;j>=1;j--)
        {
            if(a[i][j]==0)tot++;
        }
    cout<<tot;
    return 0;
}
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://www.cnblogs.com/sssy/p/6636450.html