網上有很多關于pos機游戲解決方案,自學 C++ 第 7 課 跳躍游戲的知識,也有很多人為大家解答關于pos機游戲解決方案的問題,今天pos機之家(m.51zrwd.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機游戲解決方案
跳躍游戲規則描述:先給定一個非負整數數組nums,例如 [4,4,0,2,3,3,1,2,4,2],假定一臺機器人要從nums[0]起跳,num[0]元素的值表示能跳躍的最大距離,也就是說,機器人第一次可跳躍到(4,0,2,3)中任意位置,第二次跳躍從第一次跳躍的落腳點起跳,可跳躍的最大距離是第一次跳躍的落腳點元素值。如果落腳點元素的值為0,表示無法跳躍。問,機器人針對一個給定數組(假設有n個元素),從nums[0]到nums[n-1],最少需要跳躍幾次?并標記出每次跳躍落腳點的坐標。
跳躍游戲需要每次做出選擇時,都要選擇下一次能夠有更多選擇或者更遠距離的位置,每一次選擇都是最優選擇,最后累積出的結果也是最優的解。完成跳躍游戲的程序和算法很多,如何分析、推導其過程以及所有可能情況,通過目前所學的有限編程知識完成上述功能?
分析第一次跳躍過程,從nums[0](nums[0]≠0)起跳,首先判斷nums[0+1]到nums[0+nums[0]]區間內各元素能達到的最大邊界 maxpos1 = j+nums[0+j],j 值范圍為1到nums[0],并獲得第一次跳躍落腳點的坐標 indexx1。數組nums為[4,4,0,2,3,3,1,2,4,2]時,第一次跳躍每個可選落腳點所能達到的最大邊界maxpos1分別為 1+4=5;2+0=2 (0 無法跳躍);3+2=5;4+3=7;所以最優選擇的落腳點坐標 indexx1=4。如果數組nums變為[4,4,0,4,3,3,1,2,4,2],那么會出現兩個最大值,對于跳躍過程中出現的多個解,為了方便程序處理,皆取最后一個滿足maxpos1的元素坐標。
第一次跳躍
第二跳躍,是從nums[indexx1]起跳,判斷nums[indexx1+1]到nums[indexx1+nums[indexx1]]區間內各元素能達到的最大邊界maxpos2 = j+nums[indexx1+j],j值范圍為1到nums[indexx1],并獲得第一次跳躍落腳點的坐標 indexx2。對于數組[4,4,0,2,3,3,1,2,4,2],從nums[4]起跳,第二次跳躍每個可選落腳點所能達到的最大邊界maxpos2分別為1+3=4;2+1=3;3+2=5;所以最優選擇的落腳點坐標 indexx2=indexx1+3=7。
第二次跳躍
第三次跳躍以此類推,通過判斷indexx2+maxpos3的值是否大于等于9來確定,下一跳躍是否能夠到達nums[9],數組[4,4,0,2,3,3,1,2,4,2]的indexx2+maxpos3等于9,所以最少需要3次跳躍到達終點。
對于非零數組nums,還存在幾種特殊情況:
一是nums[0]等于0,即無法起跳,例如[0,1,2,3,1];
二是nums[0]大于或等于n-1,即一次跳躍即可到達終點,例如[5,2,3,0,1,6];
三是所有選擇的最終落腳點皆為0,即無法繼續跳躍,例如[3,2,1,0,1,2,3]或[3,3,2,1,0,1]
根據上述分析,除了sums[]數組,每次跳躍后可能達到的最大邊界和落腳點坐標分別用兩個數組maxpos[]和indexx[],使用vector聲明數組并默認初始化為0。
vector 一維數組
編寫的程序&注解
測試結果
知識點:
? fmax(x,y); 返回兩個參數中的最大值,該函數定義于<cmath>標準庫頭文件中。英文對照說明: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.
? || 是邏輯或運算符,只要運算符||兩邊表達式有一個為ture,運算結果就為ture,判斷語句執行;只有運算符||兩邊表達式均為false,運算結果才是false,判斷語句不執行;如果前面一個表達式為true,那么就不會再執行和判斷后面的表達式。
|| 運算符示例
? break作用是結束跳出循環體,直接執行循環體以外的下一行語句。在單個循環語句中,break作用是跳出該循環語句;在嵌套循環中,break作用是跳出最近的循環,并且不影響外層的循環。
自學 C++ 第 1 課 數字大小排序
自學 C++ 第 2 課 數組包含關系
自學 C++ 第 3 課 正整數反序輸出
自學 C++ 第 4 課 計算體積及表面積
自學 C++ 第 5 課 楊輝三角
自學 C++ 第 6 課 二維數組找最值
以上就是關于pos機游戲解決方案,自學 C++ 第 7 課 跳躍游戲的知識,后面我們會繼續為大家整理關于pos機游戲解決方案的知識,希望能夠幫助到大家!









