zoukankan      html  css  js  c++  java
  • 面积问题最简做法

    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
     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 }
     
  • 相关阅读:
    LeetCode
    数据流中的中位数
    二叉搜索树的第k个结点
    对称的二叉树
    按之字形顺序打印二叉树
    把二叉树打印成多行
    二叉树的下一个结点
    链表中环的入口结点
    删除链表中重复的结点
    不用加减乘除做加法
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6641311.html
Copyright © 2011-2022 走看看