zoukankan      html  css  js  c++  java
  • 2017计算机学科夏令营上机考试-C:岛屿面积

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    用一个n*m的二维数组表示地图,1表示陆地,0代表海水,每一格都表示一个1*1的区域。地图中的格子只能横向或者纵向连接(不能对角连接),连接在一起的陆地称作岛屿,同时整个地图都被海水围绕。假设给出的地图中只会有一个岛屿,并且岛屿中不会有湖(即不会有水被陆地包围的情况出现)。请判断所给定的二维地图中岛屿的周长。

    输入
    第一行为n和m,表示地图的大小(1<=n<=100, 1<=m<=100)。接下来n行,每行有m个数,分别描述每一格的数值。数值之间均用空格隔开。
    输出
    只有一行,即岛屿的周长(正整数)。
    样例输入
    3 4
    1 1 1 0
    0 1 0 0
    1 1 0 0
    样例输出
    14
    来源
    cs10116 final exam
    #include<stdio.h>
    int  map[110][110];//全局变量
    int n,m;
    int go[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//方向数组,上下左右--八个方向
    int main()
    {
        int  i,j,k;
        int sum=0;
        scanf("%d%d",&m,&n);
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                scanf("%d",&map[i][j]);
            }
        }
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                if(map[i][j]==1)//当前的这个数的值要为1,陆地
                    for(k=0;k<4;k++)//遍历陆地的上下左右四个方向是否为0(海水)
                    {
                        int gx=i+go[k][0];
                        int gy=j+go[k][1];
                        if(map[gx][gy]==0)//如果为海水,则计数值周长加一
                        {
                            sum++;
                        }
                    }
            }
        }
        printf("%d
    ",sum);
        return 0;
    }
    #include<stdio.h>
    int  map[110][110];//全局变量
    int n,m;
    int go[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//方向数组,上下左右--八个方向
    int  main()
    {
        int i,j,k;
        int sum=0;
        int gx,gy;
        scanf("%d%d",&m,&n);
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
            {
                scanf("%d",&map[i][j]);
            }
        }
    
        for(i=0;i<=m;i++)
        {
            for(j=0;j<=n;j++)
            {
                if(map[i][j]==1)  //如果当前为1,则开始遍历
                for(k=0;k<4;k++)
                {
                    
                     gx=i+go[k][0];
                     gy=j+go[k][1];
                    if(map[gx][gy]==0)//如果为0,计数+1
                    {
                        sum++;
                    }
                }
            }
        }
        printf("%d
    ",sum);
        
        return 0;
    
    }
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    Appium+unittest+PageObject实例
    monkeyrunner简单用法
    Mac电脑修改系统文件夹的权限
    UIImage剪切
    LLDB 打印 frame
    打开qq在线聊天
    获取当地时间
    微信支付SDK使用心得
    获取当前星期几
    UIView相对于屏幕的frame
  • 原文地址:https://www.cnblogs.com/gcter/p/7274799.html
Copyright © 2011-2022 走看看