博客
关于我
CCF 201909-2 小明种苹果(续)满分代码
阅读量:307 次
发布时间:2019-03-03

本文共 1726 字,大约阅读时间需要 5 分钟。

小明种苹果(续)

问题描述

小明种苹果的任务再次被赋予任务,需要根据给定的苹果种植数据,计算出总的苹果数量、破损数量以及异常点数量。通过分析输入数据和代码逻辑,我们可以一步步完成这一任务。

输入数据

输入数据分为两行,第一行为44 74 -7 -12 -55 73 -8 -6 59 -45 76 -5 -10 60 -25 80 -6 -15 59 0,第二行为54 10 0 9 04 10 -2 7 02 10 04 10 -3 5 04 10 -1 8 0。

这些数据可能表示苹果种植的不同分段,每个分段的苹果数量以及破损情况。

解题思路

  • 读取输入数据:首先读取第一行的n值,确定分段数量。
  • 初始化变量:创建一个记录破损情况的数组drop,以及一个存储每段苹果数量的数组b。
  • 遍历每一段:对于每一段,读取t值后,处理b数组中的每个元素。
  • 计算当前段苹果数:如果当前段是第一段,直接将a设置为b[0]。对于后续段,检查是否有破损情况。如果当前段破损,记录并更新a为当前段的苹果数;否则,累加当前段的苹果数。
  • 更新总苹果数:将当前段的苹果数加到总苹果数s中。
  • 计算破损数:如果当前段破损,增加破损数D。
  • 处理异常点:根据相邻段的破损情况,计算异常点数量E。
  • 输出结果:最后输出总苹果数、破损数以及异常点数量。
  • 代码实现

    #include 
    using namespace std;const int N = 1000;int main() { int n, t, s = 0, a, D = 0, E = 0; cin >> n; int drop[N] = {0}; int b[N + 2]; for (int j = 1; j <= n; ++j) { cin >> t; for (int i = 0; i < t; ++i) { cin >> b[i]; if (i == 0) { a = b[0]; } else if (b[i] > 0) { if (a > b[i]) { drop[j] = 1; a = b[i]; } else { a += b[i]; } } s += a; } if (drop[j]) { D++; } for (int j = 1; j <= n; ++j) { if (j == 1 && drop[n] && drop[1] && drop[2]) { E++; } else if (j == n && drop[j - 1] && drop[j] && drop[1]) { E++; } else if (j != 1 && j != n && drop[j - 1] && drop[j] && drop[j + 1]) { E++; } } } cout << s << " " << D << " " << E << endl; return 0;}

    结果分析

    通过上述代码处理输入数据,可以得到以下结果:

    • 总苹果数(s):根据每段的苹果数量累加,得到总的苹果数量。
    • 破损数(D):记录每段破损情况,统计破损数量。
    • 异常点数量(E):根据相邻段的破损情况,判断是否存在异常点。

    通过代码的处理逻辑,可以清晰地看到如何从输入数据中提取有用信息,并根据给定的规则计算出所需的结果。

    转载地址:http://oepm.baihongyu.com/

    你可能感兴趣的文章
    Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
    查看>>
    Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
    查看>>
    Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
    查看>>
    Openlayers中加载GeoJson文件显示地图
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
    查看>>
    Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
    查看>>
    Openlayers中多图层遮挡时调整图层上下顺序
    查看>>
    Openlayers中实现地图上打点并显示图标和文字
    查看>>
    Openlayers中实现地图上添加一条红色直线
    查看>>
    Openlayers中将某个feature置于最上层
    查看>>
    Openlayers中点击地图获取坐标并输出
    查看>>
    Openlayers中设置定时绘制和清理直线图层
    查看>>
    Openlayers入门教程 --- 万字长篇
    查看>>
    Openlayers各组件默认的css样式
    查看>>
    Openlayers图文版实战,vue项目从0到1做基础配置
    查看>>
    VM16+ubuntu20.04+win10如何固定虚拟机的ip (固定IP)
    查看>>
    OpenLayers学习三:地图旋转及地图跳转到某一点的方式(以类为接口)
    查看>>
    OpenLayers学习二:点标记的添加删除和修改(以类为接口)
    查看>>
    Openlayers实战教程学习大纲及引导
    查看>>
    Openlayers实战:LayerGroup添加删除显示隐藏
    查看>>