所有演算法均是用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值還是不等,說明不存在相...