pos機(jī)游戲解決方案

 新聞資訊2  |   2023-07-31 21:23  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)游戲解決方案,自學(xué) C++ 第 7 課 跳躍游戲的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)游戲解決方案的問(wèn)題,今天pos機(jī)之家(www.www690aa.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)游戲解決方案

pos機(jī)游戲解決方案

跳躍游戲規(guī)則描述:先給定一個(gè)非負(fù)整數(shù)數(shù)組nums,例如 [4,4,0,2,3,3,1,2,4,2],假定一臺(tái)機(jī)器人要從nums[0]起跳,num[0]元素的值表示能跳躍的最大距離,也就是說(shuō),機(jī)器人第一次可跳躍到(4,0,2,3)中任意位置,第二次跳躍從第一次跳躍的落腳點(diǎn)起跳,可跳躍的最大距離是第一次跳躍的落腳點(diǎn)元素值。如果落腳點(diǎn)元素的值為0,表示無(wú)法跳躍。問(wèn),機(jī)器人針對(duì)一個(gè)給定數(shù)組(假設(shè)有n個(gè)元素),從nums[0]到nums[n-1],最少需要跳躍幾次?并標(biāo)記出每次跳躍落腳點(diǎn)的坐標(biāo)。

跳躍游戲需要每次做出選擇時(shí),都要選擇下一次能夠有更多選擇或者更遠(yuǎn)距離的位置,每一次選擇都是最優(yōu)選擇,最后累積出的結(jié)果也是最優(yōu)的解。完成跳躍游戲的程序和算法很多,如何分析、推導(dǎo)其過(guò)程以及所有可能情況,通過(guò)目前所學(xué)的有限編程知識(shí)完成上述功能?

分析第一次跳躍過(guò)程,從nums[0](nums[0]≠0)起跳,首先判斷nums[0+1]到nums[0+nums[0]]區(qū)間內(nèi)各元素能達(dá)到的最大邊界 maxpos1 = j+nums[0+j],j 值范圍為1到nums[0],并獲得第一次跳躍落腳點(diǎn)的坐標(biāo) indexx1。數(shù)組nums為[4,4,0,2,3,3,1,2,4,2]時(shí),第一次跳躍每個(gè)可選落腳點(diǎn)所能達(dá)到的最大邊界maxpos1分別為 1+4=5;2+0=2 (0 無(wú)法跳躍);3+2=5;4+3=7;所以最優(yōu)選擇的落腳點(diǎn)坐標(biāo) indexx1=4。如果數(shù)組nums變?yōu)閇4,4,0,4,3,3,1,2,4,2],那么會(huì)出現(xiàn)兩個(gè)最大值,對(duì)于跳躍過(guò)程中出現(xiàn)的多個(gè)解,為了方便程序處理,皆取最后一個(gè)滿(mǎn)足maxpos1的元素坐標(biāo)。

第一次跳躍

第二跳躍,是從nums[indexx1]起跳,判斷nums[indexx1+1]到nums[indexx1+nums[indexx1]]區(qū)間內(nèi)各元素能達(dá)到的最大邊界maxpos2 = j+nums[indexx1+j],j值范圍為1到nums[indexx1],并獲得第一次跳躍落腳點(diǎn)的坐標(biāo) indexx2。對(duì)于數(shù)組[4,4,0,2,3,3,1,2,4,2],從nums[4]起跳,第二次跳躍每個(gè)可選落腳點(diǎn)所能達(dá)到的最大邊界maxpos2分別為1+3=4;2+1=3;3+2=5;所以最優(yōu)選擇的落腳點(diǎn)坐標(biāo) indexx2=indexx1+3=7。

第二次跳躍

第三次跳躍以此類(lèi)推,通過(guò)判斷indexx2+maxpos3的值是否大于等于9來(lái)確定,下一跳躍是否能夠到達(dá)nums[9],數(shù)組[4,4,0,2,3,3,1,2,4,2]的indexx2+maxpos3等于9,所以最少需要3次跳躍到達(dá)終點(diǎn)。

對(duì)于非零數(shù)組nums,還存在幾種特殊情況:

一是nums[0]等于0,即無(wú)法起跳,例如[0,1,2,3,1];

二是nums[0]大于或等于n-1,即一次跳躍即可到達(dá)終點(diǎn),例如[5,2,3,0,1,6];

三是所有選擇的最終落腳點(diǎn)皆為0,即無(wú)法繼續(xù)跳躍,例如[3,2,1,0,1,2,3]或[3,3,2,1,0,1]

根據(jù)上述分析,除了sums[]數(shù)組,每次跳躍后可能達(dá)到的最大邊界和落腳點(diǎn)坐標(biāo)分別用兩個(gè)數(shù)組maxpos[]和indexx[],使用vector聲明數(shù)組并默認(rèn)初始化為0。

vector 一維數(shù)組

編寫(xiě)的程序&注解

測(cè)試結(jié)果

知識(shí)點(diǎn):

? fmax(x,y); 返回兩個(gè)參數(shù)中的最大值,該函數(shù)定義于<cmath>標(biāo)準(zhǔn)庫(kù)頭文件中。英文對(duì)照說(shuō)明:fmax() function is a library function of cmath header, it is used to find the maximum value of the given numbers, it accepts two number and returns the larger one.

? || 是邏輯或運(yùn)算符,只要運(yùn)算符||兩邊表達(dá)式有一個(gè)為ture,運(yùn)算結(jié)果就為ture,判斷語(yǔ)句執(zhí)行;只有運(yùn)算符||兩邊表達(dá)式均為false,運(yùn)算結(jié)果才是false,判斷語(yǔ)句不執(zhí)行;如果前面一個(gè)表達(dá)式為true,那么就不會(huì)再執(zhí)行和判斷后面的表達(dá)式。

|| 運(yùn)算符示例

? break作用是結(jié)束跳出循環(huán)體,直接執(zhí)行循環(huán)體以外的下一行語(yǔ)句。在單個(gè)循環(huán)語(yǔ)句中,break作用是跳出該循環(huán)語(yǔ)句;在嵌套循環(huán)中,break作用是跳出最近的循環(huán),并且不影響外層的循環(huán)。

自學(xué) C++ 第 1 課 數(shù)字大小排序

自學(xué) C++ 第 2 課 數(shù)組包含關(guān)系

自學(xué) C++ 第 3 課 正整數(shù)反序輸出

自學(xué) C++ 第 4 課 計(jì)算體積及表面積

自學(xué) C++ 第 5 課 楊輝三角

自學(xué) C++ 第 6 課 二維數(shù)組找最值

以上就是關(guān)于pos機(jī)游戲解決方案,自學(xué) C++ 第 7 課 跳躍游戲的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)游戲解決方案的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.www690aa.com/newsone/92524.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。