Comment puis-je adapter ce programme pour se conformer à la juge en ligne?

StackOverflow https://stackoverflow.com/questions/929001

  •  06-09-2019
  •  | 
  •  

Question

Je suis la résolution de l'étape Editer les échelles de UVA sur un sous-site uva nommé programming-challenges.com, mais étant donné que je n'ai pas du tout le format dans lequel je suis censé test d'entrée, je simplement pris leur échantillon entrée, mettez-le dans un fichier texte et testé mon code à partir de là. Comme ceci:

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);
}



}

mon fichier d'entrée étant:

cat
dig
dog
fig
fin
fine
fog
log
wine

Je suis censé rendre le code conforme au modèle suivant, is..I chose ne reçoivent pas où cette chose est la capture de sa chaîne:

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.
}

Pourquoi devrais-je le placer où il est dit // placer votre code ici et pas ici ??

 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;

}

Comment puis-je manipuler l'entrée ??

Était-ce utile?

La solution

Je pense que l'idée est ici pour écrire votre programme dans la classe myStuff, où il sera appelé dans la méthode run(). A partir de la méthode run(), vous pouvez utiliser Modelo.ReadLn() pour obtenir votre entrée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top