2009-05-30 3 views
0

私はUVAのEdit Step Laddersをprogramming-challenges.comという名前のuvaサブサイトで解決していますが、テスト入力と思われるすべてのフォーマットを取得していないので、それをテキストファイルに入れ、そこから自分のコードをテストしました。このプログラムをオンラインジャッジに準拠させるにはどうすればよいですか?

import java.io.*; 
import java.util.*; 

class Levenshtein { 
    private static int minimum(int a, int b, int c) { 
     if(a<=b && a<=c) 
      return a; 
     if(b<=a && b<=c) 
      return b; 
     return c; 
    } 

public static int computeLevenshteinDistance(String str1, String str2) { 
    return computeLevenshteinDistance(str1.toCharArray(), 
             str2.toCharArray()); 
} 

private static int computeLevenshteinDistance(char [] str1, char [] str2) { 
    int [][]distance = new int[str1.length+1][str2.length+1]; 

    for(int i=0;i<=str1.length;i++) 
      distance[i][0]=i; 

    for(int j=0;j<=str2.length;j++) 
     distance[0][j]=j; 

    for(int i=1;i<=str1.length;i++) 
     for(int j=1;j<=str2.length;j++) 
      distance[i][j]= minimum(distance[i-1][j]+1, 
            distance[i][j-1]+1, 
            distance[i-1][j-1]+ 
            ((str1[i-1]==str2[j-1])?0:1)); 

    return distance[str1.length][str2.length]; 
} 

public static void main(String args[]){ 

ArrayList<String> theWords = new ArrayList<String>(); 

try { 

     String ruta="entradaLevenshtein.txt"; 
     File myFile = new File (ruta); 
     FileReader fileReader = new FileReader(myFile); 

     BufferedReader reader = new BufferedReader(fileReader); 

     String line = null; 

     while ((line=reader.readLine())!=null){ 
      System.out.println(line); 
      theWords.add(line); 
     } 



     reader.close(); 
    } 

    catch (IOException ex){ 
     ex.printStackTrace(); 

    } 
{} 
// todo esto sólo para iniciar el arreglo 
// ahora vienen las llamadas a Levenstein y las comparaciones 

int maxEdit=0; 
int actualEdit=0; 

int wordsIndex1 =0, wordsIndex2=0; 


while (wordsIndex1<= theWords.size()) 
{ 
    while (wordsIndex2<= theWords.size()-1){ 
    actualEdit=computeLevenshteinDistance(theWords.get(wordsIndex1),theWords.get(wordsIndex2)); 
    if (actualEdit>maxEdit){maxEdit=actualEdit;} 
    wordsIndex2++; 
    } 
wordsIndex1++; 

} 

System.out.println(maxEdit+1); 
} 



} 

私の入力ファイルビーイング:このよう

cat 
dig 
dog 
fig 
fin 
fine 
fog 
log 
wine 

私はこの事がキャプチャされた場合の事をis..Iを得ることはありません、コードは次のパターンに準拠するようになっていますその文字列:

import java.io.*; 
import java.util.*; 

class Modelo implements Runnable{ 
    static String ReadLn(int maxLength){ // utility function to read from stdin, 
              // Provided by Programming-challenges, edit for style only 
     byte line[] = new byte [maxLength]; 
     int length = 0; 
     int input = -1; 
     try{ 
      while (length < maxLength){//Read untill maxlength 
       input = System.in.read(); 
       if ((input < 0) || (input == '\n')) break; //or untill end of line ninput 
       line [length++] += input; 
      } 

      if ((input < 0) && (length == 0)) return null; // eof 
      return new String(line, 0, length); 
     }catch (IOException e){ 
      return null; 
     } 
    } 

    public static void main(String args[]) // entry point from OS 
    { 
     Modelo myWork = new Modelo(); // Construct the bootloader 
     myWork.run();   // execute 
    } 

    public void run() { 
     new myStuff().run(); 
    } 
} 
class myStuff implements Runnable{ 
    public void run(){ 
     try 
     { 

     /// PLACE YOUR JAVA CODE HERE 




     }catch(Exception e){ 
      System.out.println("A Exception was generated"); 
     } 
    } 

    // You can insert more classes here if you want. 
} 

なぜここに配置する必要がありますか?

try{ 
        while (length < maxLength){//Read untill maxlength 
         input = System.in.read(); 
         if ((input < 0) || (input == '\n')) break; //or untill end of line input 
         line [length++] += input; 

} 

入力を操作するにはどうすればよいですか?

答えて

1

ここでの考え方は、run()メソッドで呼び出されるmyStuffクラスにプログラムを書くことです。 run()メソッドから、Modelo.ReadLn()を入力して入力することができます。

関連する問題