貪心演算法跳躍遊戲
*非負整數的陣列,陣列中的數字代表的是你能跳躍的距離。
*問題是根據當前的陣列中的資料資訊,是否可以跳躍到最後
*貪心演算法,怎麼貪心
*最終是竭盡所能跳的最遠處
*每次走一個位置的時候能跳的最遠,那麼最終的時候一定是跳的最遠的
*因此用一個變數記錄當前可以走的長度,另一個變數記錄當前的陣列下標的位置
*每次更新陣列下標的時候更新可以跳的跳數
*/
#include "iostream"
using namespace std;
bool f()
{
int n = 0;
int a[501] = {0};
cin>>n;
for(int i = 0;i<n;i++)
{
cin>>a[i];
}
if(a[0] == 0)
return false;
int num = a[0];
//在這裡體現貪心,總是找當前能走的最長步長
for(int i = 1;i < n-1;i++)
{
num--;//走一步進入下一個
if(num<a[i])//和下一個進行比較,找一個最大的
{
num = a[i];
}
if(num==0)
{
return false;
}
}
//這裡主要單獨考慮最後一個,如果倒數第二個還剩下步數的情況下,一定可以走到最後
if(num>0)
return true;
else
return false;
}
int main()
{
if(f())
{
cout<<"true";
}
else
{
cout<<"false";
}
return 0;
}