【问题描述】

用一个二维方阵(最小为3X3,最大为9X9)表示一片海域。方阵中的元素只由0和1组成。1表示海岸线。计算水面面积(即:不在1围起来的区域中0的个数)。如下图所示6X6方阵表示的水面面积为14:
0 0 0 1 0 0
0 0 1 0 1 0
0 1 0 0 0 1
1 0 0 0 1 0
1 0 1 0 1 0
1 1 0 1 0 0
上述方阵表示的海域满足下面两个要求:
1、小岛只有一个。
2、用1表示的海岸线是封闭的,但有可能是凸的,也有可能是凹的。

【输入形式】

先从标准输入中输入方阵的阶数,然后从下一行开始输入方阵的元素(只会输入0或1),各元素之间以一个空格分隔,每行最后一个元素后没有空格,但会有回车换行符。

【输出形式】

在标准输出上输出用整数表示的水面面积。

【输入样例】

6
0 0 0 1 0 0
0 0 1 0 1 0
0 1 0 0 0 1
1 0 0 0 1 0
1 0 1 0 1 0
1 1 0 1 0 0

【输出样例】

14

【样例说明】

输入是6X6的方阵。该方阵中不在1围起来的区域中0的个数为14,所以输出的小岛面积为14。注意:最下方的三个元素1(即第5行第3列的1、第6行第2列的1、第6行第4列的1)组成了一个凹形的海岸线,第6行第3列的0不在海岸线内,所以应算作水面面积。

思路

对于方阵中的任意一个元素0,如果其位于同一行上的两个1之间,并且位于同一列上的两个1之间,则该元素肯定在1围起来的区域中。否则就不在1围起来的区域中,即属于水面。
所以先每行最远的两个1之间,不是1的数+2,再每列最远的两个1之间,不是1的数+2,所以4代表小岛,1代表海岸线,0和2代表水面(样例的结果如下图)
注:代码看似长,但遍历行和遍历列的代码相似,复制稍加修改即可

#include<stdio.h>
int main()
{int n,a[10][10],i,j;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);int row1,row2,col1,col2;for(i=0;i<n;i++)//行 {for(j=0;j<n;j++)//第一个1 if(a[i][j]==1){col1=j;break;}for(j=n;j>=0;j--)//最后一个1 if(a[i][j]==1){col2=j;break;}for(j=col1+1;j<col2;j++)//两个1之间 if(a[i][j]!=1)a[i][j]+=2; }for(j=0;j<n;j++)//列 {for(i=0;i<n;i++)//第一个1 if(a[i][j]==1){row1=i;break;}for(i=n;i>=0;i--)//最后一个1 if(a[i][j]==1){row2=i;break;}for(i=row1+1;i<row2;i++)if(a[i][j]!=1)a[i][j]+=2; }int count=0;for(i=0;i<n;i++){for(j=0;j<n;j++)if(a[i][j]==0||a[i][j]==2)//4代表小岛,0和2代表水面 count++;}printf("%d\n",count);return 0;
}

求水面面积(C语言)相关推荐

  1. c语言坐标海伦公式,C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积...

    导航:网站首页 > C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积 C语言:用海伦公式求三角形面积 , C语言编程问题,利用海伦公式求三角形面积 匿名网友: 程序已 ...

  2. 求三角形面积——C语言

    [C语言] 利用海伦公式求三角形面积 初学小白一枚,望各位大佬多多指教 代码如下: #include<stdio.h> //标准输入输出头文件 #include<math.h> ...

  3. 【求四边形面积_Java语言编程题】

    给四个点的坐标,求四边形面积(java版) java版 //任意输入4个点,求围成四边形的面积是多少? //四点一线.凹四边形.四边形,有两个点共点,都可以套用. public long getAre ...

  4. 计算圆环面积的c语言程序,C0610求圆环面积_C语言程序设计源代码_doc_大学课件预览_高等教育资讯网...

    #include void main() { double r2,r1,s; double area_ring (double x,double y); /*函数原型,求圆环面积*/ printf(& ...

  5. c语言只用a求正方形面积,C语言程序设计练习题(答案).docx

    C语言程序设计练习题(答案)C语言程序设计练习题(答案) 上机实训项目实验1实验步骤1.进入VC环境 从"开始"→"程序"→"Microsoft Vi ...

  6. 求三角形面积c 语言,C语言求三角形面积

    满意答案 octwkc 2013.05.12 采纳率:52%    等级:12 已帮助:8556人 #include "stdio.h" #include "math.h ...

  7. C语言实验报告求三角形面积,C语言作业,编程求三角形面积。

    满意答案 oikre5602 2014.05.08 采纳率:47%    等级:9 已帮助:363人 123456789#include<stdio.h>#include<math. ...

  8. 【C语言】练习:给出三角形三边长,求三角形面积

    [C语言]练习:给出三角形三边长,求三角形面积 题目:给出三角形三边长,求三角形面积 思路: 1.任意给出三边,能构成三角形的条件:任意两边之和大于第三边. 2.三角形面积计算公式(海伦公式) 设三角 ...

  9. 海伦公式用计算机语言怎么写,C语言:用海伦公式求三角形面积

    C语言:用海伦公式求三角形面积 来源:互联网  宽屏版  评论 2012-08-11 02:25:59 分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: 我编 ...

最新文章

  1. 你的组织为自动化测试做好准备了吗?
  2. 2010年度报告:是谁在编写Linux内核?
  3. ThinkPHP框架整合phpqrcode生成二维码DEMO
  4. maven 的安装配置 和编译java程序
  5. 基于ARM A53开发板,使用按键中断及中断底半部实现《led灯状态取反》的驱动
  6. 用户账号管理基本概念
  7. SQL Server多表同时查询
  8. oracle数据库查表创建语句,转载:如何查看Oracle数据表的建表语句?
  9. vm虚拟机iso镜像linux系统下载地址,Vmware Tools ISO 虚拟机ISO系统镜像大全
  10. python输出关键字的行号_python 《第七谈》简单的抓取数据,联行号为例
  11. flow.php 漏洞,php – 使用Apache的Flowplayer安全流
  12. QTreeView节点拖放
  13. 微波存在感应雷达,人体存在感应雷达模块,物联网智能赋能应用
  14. 光波传输的角谱理论【理论,实例及matlab代码】
  15. Iocomp控件官网下载地址破解功能介绍手册
  16. PTA L1-049 天梯赛座位分配(20分)(python)
  17. 电路课组(一)电路原理 Review 1 线性电路分析基础
  18. linux转置的命令,转置文件(awk)
  19. 西南大学网络与继续教育学院课程考试试题卷
  20. 2020.5.31 牛客“科林明伦杯” A.点对最大值【树形dp】

热门文章

  1. FCKeditor集锦
  2. Centos下安装JDK环境配置
  3. java 文件内容读取到字符串中,从文本文件中将字符串值读取到Java中的Jav...
  4. django的配置文件字符串是怎么导入的?
  5. BZOJ 2456: mode
  6. android 后台代码设置动画
  7. 通过JCONSOLE监控TOMCAT的JVM使用情况
  8. 通向财务自由之路08_入市或市场时机选择
  9. 指定jupyter运行的conda环境和报错处理generator_to_async_generator
  10. Tomcat绑定jre