Google Code Jam - SkipStones的一种递归算法

Google Code Jam - SkipStones的一种递归算法

public   class  SkipStones {
    
private  String water  =   " X " ;

    
public   int  maxDistance(String water) {
        
this .water  =  water;
        
int  max  =   0 ;
        
int  sum  =   0 ;
        
for  ( int  initial  =   1 ; initial  <  water.length()  +   1 ; initial ++ ) {
            sum 
=  bounce( 0 , initial);
            max 
=  (sum  >  max  ?  sum : max);
        }
        
return  max;
    }

    
private   int  bounce( int  startDistance,  int  bounceDistance) {
        
if  (bounceDistance  ==   0 )
            
return  startDistance;

        
if  ((startDistance  +  bounceDistance)  >  water.length())
            
return   - 1 ;

        
if  (water.charAt(startDistance  +  bounceDistance  -   1 ==   ' X ' )
            
return  startDistance;

        
return  bounce(startDistance  +  bounceDistance, bounceDistance  /   2 );
    }

    
public   static   void  main(String[] args) {
        SkipStones skipStones 
=   new  SkipStones();
        System.out.println(skipStones.maxDistance(args[
0 ]));
    }
}

你可能感兴趣的:(Google Code Jam - SkipStones的一种递归算法)