Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- /*
- * Tuenti Contest
- * Challenge 7 - Tile Game
- * Author: Pedro Antonio Pardal Jimena
- * Email: pardal@alu.uma.es
- */
- public class TileGame
- {
- private static int minimo( int a, int b, int c )
- {
- if ( a <= b && a <= c )
- return a;
- else if ( b <= a && b <= c )
- return b;
- else
- return c;
- }
- private static int distanciaLevenshtein( char[] s1, char[] s2, int add, int del, int exc )
- {
- int[][] tabla = new int[s1.length + 1][s2.length + 1];
- for ( int i = 0; i <= s1.length ;i++ )
- tabla[i][0] = i * add;
- for ( int j = 0; j <= s2.length; j++ )
- tabla[0][j] = j * del;
- for ( int i = 1; i <= s1.length; i++ )
- {
- for ( int j = 1; j <= s2.length; j++ )
- {
- tabla[i][j] = minimo( tabla[i-1][j] + add,
- tabla[i][j-1] + del,
- tabla[i-1][j-1] + ((s1[j-1] == s2[i-1]) ? 0 : exc ));
- }
- }
- return tabla[s1.length][s2.length];
- }
- private static int parseInput( String linea )
- {
- StringTokenizer st = new StringTokenizer( linea, " " );
- String inicio = st.nextToken();
- String objetivo = st.nextToken();
- String costes = st.nextToken();
- StringTokenizer st2 = new StringTokenizer( costes, "," );
- int costeAdd = Integer.parseInt(st2.nextToken());
- int costeDel = Integer.parseInt(st2.nextToken());
- int costeExc = Integer.parseInt(st2.nextToken());
- return distanciaLevenshtein( inicio.toCharArray(), objetivo.toCharArray(),
- costeAdd, costeDel, costeExc );
- }
- public static void main( String[] args ) throws IOException
- {
- BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
- while ( reader.ready() )
- {
- String linea = reader.readLine();
- int result = parseInput( linea );
- System.out.println( result );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement