(算法)跳跃问题
題目:
給定非負整數(shù)數(shù)組,初始時在數(shù)組起始位置放置一機器人,數(shù)組的每個元素表示在當前位置機器人一步最大能夠跳躍的數(shù)目。它的目的是用最少的步數(shù)到達數(shù)組末端。
例如:
給定數(shù)組A=[2,3,1,1,2],最少跳步數(shù)目為2,對應(yīng)的跳法是2->3->2,數(shù)組位置變化為0->1->4。
[2,3,1,1,2,4,1,1,6,1,7],所需步數(shù)為5。
思路:
代碼:
#include<iostream> using namespace std;int jump(int A[],int n){if(n==1)return 0;int step=0;int i=0,j=0;int k,j2;while(j<n){step++;j2=j;for(k=i;k<=j;k++){j2=max(j2,k+A[k]);if(j2>=n-1)return step;}i=j+1;j=j2;if(j<i)return -1;}return step; }int main(){int A[]={2,3,1,1,2,4,1,1,6,1,7};int n=sizeof(A)/sizeof(A[0]);cout << jump(A,n) <<endl;return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/AndyJee/p/4985509.html
總結(jié)
- 上一篇: 初等数论四大基本定理
- 下一篇: 使用自定义的item、Adapter和A