Guest User

CH7 Tile Game

a guest
Jun 20th, 2011
1,640
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.StringTokenizer;
  5.  
  6. /*
  7.  * Tuenti Contest
  8.  * Challenge 7 - Tile Game
  9.  * Author: Pedro Antonio Pardal Jimena
  10.  */
  11.  
  12. public class TileGame
  13. {
  14.     private static int minimo( int a, int b, int c )
  15.     {
  16.         if ( a <= b && a <= c )
  17.             return a;
  18.         else if ( b <= a && b <= c )
  19.             return b;
  20.         else
  21.             return c;
  22.     }
  23.    
  24.     private static int distanciaLevenshtein( char[] s1, char[] s2, int add, int del, int exc )
  25.     {
  26.         int[][] tabla = new int[s1.length + 1][s2.length + 1];
  27.        
  28.         for ( int i = 0; i <= s1.length ;i++ )
  29.             tabla[i][0] = i * add;
  30.        
  31.         for ( int j = 0; j <= s2.length; j++ )
  32.             tabla[0][j] = j * del;
  33.        
  34.         for ( int i = 1; i <= s1.length; i++ )
  35.         {
  36.             for ( int j = 1; j <= s2.length; j++ )
  37.             {
  38.                 tabla[i][j] = minimo( tabla[i-1][j] + add,
  39.                                       tabla[i][j-1] + del,
  40.                                       tabla[i-1][j-1] + ((s1[j-1] == s2[i-1]) ? 0 : exc ));
  41.             }
  42.         }
  43.        
  44.         return tabla[s1.length][s2.length];
  45.     }
  46.    
  47.     private static int parseInput( String linea )
  48.     {
  49.         StringTokenizer st = new StringTokenizer( linea, " " );
  50.        
  51.         String inicio = st.nextToken();
  52.         String objetivo = st.nextToken();
  53.  
  54.         String costes = st.nextToken();
  55.         StringTokenizer st2 = new StringTokenizer( costes, "," );
  56.        
  57.         int costeAdd = Integer.parseInt(st2.nextToken());
  58.         int costeDel = Integer.parseInt(st2.nextToken());
  59.         int costeExc = Integer.parseInt(st2.nextToken());
  60.        
  61.         return distanciaLevenshtein( inicio.toCharArray(), objetivo.toCharArray(),
  62.                                      costeAdd, costeDel, costeExc );
  63.     }
  64.    
  65.     public static void main( String[] args ) throws IOException
  66.     {
  67.         BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
  68.        
  69.         while ( reader.ready() )
  70.         {
  71.             String linea = reader.readLine();
  72.             int result = parseInput( linea );
  73.            
  74.             System.out.println( result );
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment