TIA博途SCL编程学习47_跳跃游戏

TIA博途SCL编程学习47_跳跃游戏

首页休闲益智蹦块儿极限跳跃更新时间:2024-05-09

1 | 题目

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。编写程序判断你是否能够到达最后一个位置。

示例1:

输入:[2, 3, 1, 1, 4];

输出:TRUE(可以到达最后一个位置);

解释: 我们可以先跳1步,从位置0到达位置1,然后再从位置1跳3步到达最后一个位置。

示例2:

输入: [3, 2, 1, 0, 4];

输出:FALSE(不可以到达最后一个位置);

解释: 无论怎样,你总会到达索引为3的位置,但该位置的最大跳跃长度是0,所以你永远不可能到达最后一个位置。

2 | 设计分析

本题目不能一开始就从最大长度进行跳跃,应该一次次遍历每个数组元素,采用贪心法,#statMaxStep表示每次能够到达的最远距离,比较#statMaxStep和#tempI #nums[#tempI],求出上一步的最优解,当#statMaxStep小于#tempI的时候证明已经不可能到达终点了,直接返回false,当循环变量#tempI走到末尾时则证明可以达到最后的位置。

3 | 创建功能或功能块

创建功能块FB,命名为“JumpGame”。

4 | 定义接口变量

具体接口变量定义见下图:

定义了可变长(泛型或可变限值)长整数类型一维数组,数据类型为#Array[*] of DInt,作为跳跃数据。定义布尔型变量#resultQ作为判断结果输出,TRUE表示可以跳跃,FALSE表示不可以跳跃。

5 | 程序代码

编写程序代码。如下图:

当最大步#statMaxStep小于#tempI时,不能跳跃到最后位置,直接返回程序。当FOR循环变量能够到达最后时,说明可以跳跃到最后位置。

6 | 代码测试

在循环OB中调用FB-“JumpGame”。如下图:

定义了全局数据块(数组DB)GdbJumpGameData作为实参传递给形参,注意数组DB的实参表达方式。

转至在线并监控程序。如下图:

上图为跳跃数组数据:3、2、1、0、4。

上图为结果输出,#resultQ输出为FALSE,不可以跳跃到最后。

上图为跳跃数组数据:2、3、1、1、4。

上图为结果输出,#resultQ输出为TRUE,可以跳跃到最后。

7 | 总结

学习可变长一维数组的定义和使用;

学习使用FOR循环语句;

学习使用IF条件语句;

学习RETURN在程序中的作用;

学习在OB中调用FB和实参的传递方式。

- END

冗余PLC类型

S7-1500冗余系列CPU目前一共有四种,基本参数及订货号如下:

1. TIA 博途与SIMATIC S7-1500可编程控制器

百页彩页介绍,清晰产品定位

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved