2009-05-30 38 views
0

我在一个名为programming-challenges.com的uva子网站上解决了UVA的Edit Step Ladders问题,但由于我没有得到所有我应该测试的输入格式 - 我只是简单地将他们的样本输入,把它放到一个文本文件中并从那里测试我的代码。就像这样:我该如何调整这个程序以符合在线评委的要求?

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

我认为这里的想法是在myStuff类中编写程序,它将在run()方法中调用。从run()方法中,您可以使用Modelo.ReadLn()来获取您的输入。

相关问题