esto es lo que hay en mi archivo texto.txt que esta guardado en mi disco D
AIBMOLOCN
RNESPAÑAI
OCIXEMPRC
GUATEMALA
CBPANAMAR
HAYILEAPA
IOCIXEGEG
LHYAUGURU
ECUADORUA
y esto es lo que dice en diccionario.txt que tambien esta guardado en mi disco D:
Argentina
Chile
Colombia
Cuba
Ecuador
Espana
Guatemala
Mexico
Nicaragua
Panamá
Peru
Uruguay
Este es mi codigo
Código
[/code]
import java.io.*; public class BusquedaPalabras { private static final int MAX_FILAS = 10; private static final int MAX_COLUMNAS = 10; private static final int MAX_PALABRAS = 100000; private int filas; private int columnas; private int numPalbras; private char sopa[][]= new char[MAX_FILAS][MAX_COLUMNAS]; public BusquedaPalabras() { sopaStream = abreFichero("introduzca Fichero de la Sopa"); palabraStream = abreFichero("y el del diccionario"); leeSopa(); leePalabras(); } { FileReader fichero; do { try { nombreFichero=in.readLine(); if(nombreFichero==null) } }while(fichEntrada==null); return fichEntrada; } private void leePalabras() { int numPalabras=0; try { while((palabras[numPalabras]= palabraStream.readLine())!=null) { if(numPalabras!=0 && palabras[numPalbras].compareTo(palabras[numPalbras-1])<0) { continue; } else if(++numPalbras>=MAX_PALABRAS) break; } if(palabraStream.ready()) } {} } private void leeSopa() { String unaLinea; try { int i=0; while((unaLinea = sopaStream.readLine())!=null){ columnas = t.length(); for(int j=0;j<columnas;j++) sopa[i][j]=t.charAt(j); i++; } } e.printStackTrace(); } } /* private void leeSopa() { String unaLinea; try { unaLinea=sopaStream.readLine(); if(unaLinea==null) { filas=0; return; } columnas=unaLinea.length(); for(int i=0;i<columnas;i++) sopa[0][i]=unaLinea.charAt(i); for(filas=1; (unaLinea=sopaStream.readLine())!=null;filas++) { if(unaLinea.length()!=columnas) System.err.println("La sopa es incorrecta"); for(int i=0;i<columnas;i++) sopa[filas][i]=unaLinea.charAt(i); } } catch(IOException e) {} } */ private int resolverDireccion(int filaBase,int colBase,int filaDelta,int colDelta) { int numPal=0; int resultadoBusqueda; secuencia+=sopa[filaBase][colBase]; for(int i=filaBase+filaDelta,j=colBase+colDelta; i>=0&& j>=0 && i<filas && j< columnas; i+=filaDelta,j+=colDelta) { secuencia+=sopa[j]; resultadoBusqueda=busquedaPrefijo(palabras,secuencia,numPal); if(!palabras[resultadoBusqueda].startsWith(secuencia)) break; if(palabras[resultadoBusqueda].equals(secuencia) ) { numPal++; "a" + i + "" + j); } } return numPal; } { int inf=0; int sup=n-1; while(inf<sup) { int med=(inf+sup)/2; if(a[med].compareTo(x)<0) { inf=med+1; } else sup=med; } return inf; } public int resolverSopa() { int numPal=0; for(int f=0;f<filas;f++) { for(int c=0;c<columnas;c++) { for(int df=-1;df<=1;df++) { for(int dc=-1;dc<=1;dc++) { if(df!=0 || dc!=0) {numPal=numPal+resolverDireccion(f,c,df,dc); } } } } } return numPal; } } /*Void main*/ public class Main { /** * @param args the command line arguments */ { BusquedaPalabras p=new BusquedaPalabras(); p.resolverSopa(); } } [code=/java]