TIA博途SCL編程學習47_跳躍游戲
1?| 題目
給定一個非負整數(shù)數(shù)組,你最初位于數(shù)組的第一個位置。數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。編寫程序判斷你是否能夠到達最后一個位置。
示例1:
輸入:[2, 3, 1, 1, 4];
輸出:TRUE(可以到達最后一個位置);
解釋: 我們可以先跳1步,從位置0到達位置1,然后再從位置1跳3步到達最后一個位置。
示例2:
輸入: [3, 2, 1, 0, 4];
輸出:FALSE(不可以到達最后一個位置);
解釋: 無論怎樣,你總會到達索引為3的位置,但該位置的最大跳躍長度是0,所以你永遠不可能到達最后一個位置。
2 | 設計分析
本題目不能一開始就從最大長度進行跳躍,應該一次次遍歷每個數(shù)組元素,采用貪心法,#statMaxStep表示每次能夠到達的最遠距離,比較#statMaxStep和#tempI + #nums[#tempI],求出上一步的最優(yōu)解,當#statMaxStep小于#tempI的時候證明已經(jīng)不可能到達終點了,直接返回false,當循環(huán)變量#tempI走到末尾時則證明可以達到最后的位置。
3?| 創(chuàng)建功能或功能塊
創(chuàng)建功能塊FB,命名為“JumpGame”。
4 | 定義接口變量
具體接口變量定義見下圖:
定義了可變長(泛型或可變限值)長整數(shù)類型一維數(shù)組,數(shù)據(jù)類型為#Array[*] of DInt,作為跳躍數(shù)據(jù)。定義布爾型變量#resultQ作為判斷結(jié)果輸出,TRUE表示可以跳躍,F(xiàn)ALSE表示不可以跳躍。
5 | 程序代碼
編寫程序代碼。如下圖:

當最大步#statMaxStep小于#tempI時,不能跳躍到最后位置,直接返回程序。當FOR循環(huán)變量能夠到達最后時,說明可以跳躍到最后位置。
6 | 代碼測試

在循環(huán)OB中調(diào)用FB-“JumpGame”。如下圖:

定義了全局數(shù)據(jù)塊(數(shù)組DB)GdbJumpGameData作為實參傳遞給形參,注意數(shù)組DB的實參表達方式。
轉(zhuǎn)至在線并監(jiān)控程序。如下圖:

上圖為跳躍數(shù)組數(shù)據(jù):3、2、1、0、4。

上圖為結(jié)果輸出,#resultQ輸出為FALSE,不可以跳躍到最后。

上圖為跳躍數(shù)組數(shù)據(jù):2、3、1、1、4。

上圖為結(jié)果輸出,#resultQ輸出為TRUE,可以跳躍到最后。
7 | 總結(jié)
學習可變長一維數(shù)組的定義和使用;
學習使用FOR循環(huán)語句;
學習使用IF條件語句;
學習RETURN在程序中的作用;
學習在OB中調(diào)用FB和實參的傳遞方式。
- END
冗余PLC類型
S7-1500冗余系列CPU目前一共有四種,基本參數(shù)及訂貨號如下:

1. TIA 博途與SIMATIC S7-1500可編程控制器
百頁彩頁介紹,清晰產(chǎn)品定位

博途頂級俱樂部++V :? ? ?gk405321992