前言
通过该实例学习可变长一维数组的定义和使用方法和WHILE循环语句的使用方法,从而进一步了解面向对象和标准化编程的思想。
1 | 题目
给定一个长度为n的整数数组height,分布在x-y坐标系中,有n条垂直于x轴的垂线,第i条线的两个端点是(i, 0)和(i, height[i])。用西门子TIA博途SCL语言编写程序找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。求容器可以储存的最大水量。
说明:不能倾斜容器。
示例:
输入:[1,8,6,2,5,4,8,3,7]。
输出:49。
如下图:
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。
在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
2 | 设计分析
题目中的最大容积计算可以简单看作是求封闭图形的最大面积。遵从木桶原理,从最左侧开始,最左侧垂线和最右侧垂线比较高度,选择最矮的一条垂线进行水平封闭,求出面积并保存面积值。然后把以上选择的最矮垂线和它相邻的垂线进行比较(最左侧的和其紧邻右侧相比较,最右侧的和其紧邻左侧相比较),继续找出最矮垂线进行水平封闭,求出新的面积并和前次求得的面积进行比较,保留最大面积值。利用循环语句循环比较,直到不能得到封闭图形时结束循环,即得到计算结果。
3 | 创建功能或功能块
创建功能块FB,命名为“MaxArea”。
4 | 定义接口变量
具体接口变量定义见下图:
定义整型输入输出变量result作为计算结果输出;
定义整型可变长一维数组变量heights作为输入的不同长度垂线;
定义整型静态变量statLower作为每次比较的较短垂线;
定义长整型静态变量statLeftIndex和statRightIndex作为长短比较时的索引变量;
定义长整型临时变量tempHeightsL和tempHeightsU作为输入数组的上下脚标。
- 西门子LOGO! PLC S7通信配置和程序下载步骤 2024-11-25
- SCL编程实例100例-120-贪心算法解决剪绳子问题 2024-11-25
- S7-200SMART实例之冒泡法排序子程序 2024-11-25
- 通过命令查看电脑上连接过的WIFI密码的方法 2024-11-25
- S7-200SMART实例之阀门数字量控制子程序 2024-11-25
- 修改C盘用户文件夹下的文件夹名称的方法 2024-11-25
- 如何设置网络访问 SQL Express? 2024-11-25
- S7-200SMART实例之电机控制子程序 2024-11-25
- 此电脑右键管理打不开的解决方法 2024-11-25
- SCL编程实例100例-121-鸡蛋掉落问题 2024-11-25