有趣的演算法問題12 跳躍遊戲1(貪心演算法)

2021-08-03 08:59:21 字數 1075 閱讀 1495

所有演算法均是用c++編寫

所有題目均是來自計蒜客

……我好想回爐重造。

給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。

陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。

請確認你是否能夠跳躍到陣列的最後乙個下標。

例如:a = [2,3,1,1,4] 能夠跳躍到最後乙個下標,輸出true;

a = [3,2,1,0,4] 不能跳躍到最後乙個下標,輸出false。

第一行輸入乙個正整數 n(1≤n≤500),接下來的一行 n個整數,輸入陣列 ai。

如果能跳到最後乙個下標,輸出true,否則輸出false。

形如:

樣例輸入

5 2 0 2 0 1

樣例輸出

true

1.貪心演算法:我感覺就是不考慮整體的利益,只考慮區域性的利益,你覺得這個是當前最優的就可以執行。

2.在考慮演算法問題的時候一定要注意細節方面的問題,我剛開始也是沒有注意,六個測試組只通過了五個,後來才發現自己在else if (array[sum]==0)這樣思考比,讓它輪完一圈以後找不到出來再來乙個if(sum!=n-1)要好很多。

3.這道題的關鍵在於你得到了乙個下標以後立即用sum=sum+array[sum];存起來去比較它和n-1的大小看是不是能跳出來,這裡的跳出來指的是最後乙個跳出的下標可以大於或者等於最後n-1

測試成功~!

演算法 跳躍遊戲問題合集

題目 於leetcode 55 55.跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1,然後再從位置...

演算法(38) 動態規劃(1) 跳躍遊戲 C

題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度 步數 判斷你是否能夠到達最後乙個位置。輸入 int arr 輸出 2 題意 不明白的要去搜一下,網上很多說明。思路 當前最優解 下一步的最優解 迭代或者遞迴來完成。這是解決此類問題最簡化的模型之...

有趣的小演算法 1

乙個100大小的int陣列,要求隨機新增1 100的數到其中,且不能有重複。思考 在for 0 99 迴圈中 肯定要產生隨機數然後與陣列中元素比較,如果產生的隨機數在for 0 i 中有相等,則 跳出迴圈,再產生隨機數 如果不等,繼續在for 0 i 中比較,直到小迴圈中是i值還是不等,說明不存在相...