Jump Game

class Solution {
public:
int jump(int A[], int n) {
         // Start typing your C/C++ solution below
         // DO NOT write int main() function
         if( n==0 || n == 1 ) return 0;
         int cur = 0,newCur = 0;
         int step = 0;
         while( cur < n )
         {
             if( cur + A[cur] >= n-1 ) return step+1;
             int flag = 0;
             for( int i=1;i<=A[cur];i++ )             
             {
                 if( cur+i+A[cur+i] >= A[flag] + flag )
                     flag = cur + i;             
             }    
             cur = flag;                   
             step++; 
         }
         return step;        
     }
};

 

 

 

 

class Solution {
 public:
bool canJump(int A[], int n) {
         // Start typing your C/C++ solution below
         // DO NOT write int main() function
         int cur = 0;
         while( cur < n )
         {
             if( A[cur] == 0 && cur < n-1 ) return false;
             if( cur + A[cur] >= n-1 ) return true;
             int flag = cur;
             for( int i=1;i<=A[cur];i++ )             
             {
                 if( A[cur+i] + cur + i >= A[flag]+flag  )
                     flag = cur + i;
             } 
             cur = flag;          
         }
         return true;
     }
 };

 

 

 

posted on 2013-07-04 21:36  jumping_grass  阅读(186)  评论(0)    收藏  举报

导航