zoukankan      html  css  js  c++  java
  • 宝岛探险

    #include <iostream>
    using namespace std;
    bool book[101][101];
    int a[101][101],n,m,step=1;
    void dfs(int x,int y)
    {
         int next[4][2]={{0,1}, 
                         {1,0},
                         {0,-1},
                         {-1,0}};
         int tx,ty;
         for(int i=0;i<4;i++)
         {
              tx=x+next[i][0];
              ty=y+next[i][1];
              if(tx<1 || tx>n || ty<1 || ty>m)
                  continue;
              if(a[tx][ty]>0 && book[tx][ty]==0)
              {
                  step++;
                  book[tx][ty]=1;
                  dfs(tx,ty);
              }
         }
         return;
    }
    int main()
    { 
        int sx,sy;
        cin>>n>>m>>sx>>sy;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                cin>>a[i][j];
        book[sx][sy]=1;
        dfs(sx,sy);
        cout<<step;
    
    }
        
    View Code
    试题描述
     YSF 通过秘密方法得到一张不完整的航拍地图。钓鱼岛由一个主岛和一些附属岛组成。数字表示海拔高度。0 表示海洋,1 到 9 都表示陆地。现在要计算出 YSF 跳伞所在岛的面积。此处我们把 YSF 的跳伞点上下左右相连接陆地均视为同一岛屿。
    输入
    第一行四个整数:n,m,startx,starty,表示地图有 n 行 m 列,降落点的初始坐标为(startx,starty),接下来的 n 行 m 列为地图各点的海拔高度。
    输出
    一个数,表示 YSF 跳伞所在岛的面积。
    输入示例
    10 10 6 8 1 2 1 0 0 0 0 0 2 3 3 0 2 0 1 2 1 0 1 2 4 0 1 0 1 2 3 2 0 1 3 2 0 0 0 1 2 4 0 0 0 0 0 0 0 0 1 5 3 0 0 1 2 1 0 1 5 4 3 0 0 1 2 3 1 3 6 2 1 0 0 0 3 4 8 9 7 5 0 0 0 0 0 3 7 8 6 0 1 2 0 0 0 0 0 0 0 0 1 0
    输出示例
    38
    其他说明
    数据范围:地图的大小不超过50*50。
  • 相关阅读:
    Python进程、线程
    Maven项目的坐标GroupId和ArtifactId
    java中的变量
    java中new一个对象的执行过程及类的加载顺序
    java中string和int互相转化
    什么是设计模式?
    Mybatis解决了JDBC编程哪些问题
    SQL注入、占位符拼接符
    JDBC、事务和连接池
    关于Spring配置文件xml文档的schema约束
  • 原文地址:https://www.cnblogs.com/jason2003/p/6572430.html
Copyright © 2011-2022 走看看