Hola amigos, acá les traigo el algoritmo de fuerza bruta...
function fuerzabruta : integer;
var i, j : integer;
begin
i := 1;
j := 1;
repeat
if a[i] := p[j] then begin
i := i + 1;
j := j + 1;
end
else begin
i := 1 - j + 2;
j := 1;
end;
until j > M or i > N;
if j > M then fuerzabruta := i - M
else fuerzabruta := i;
end;
El método obvio para la búsqueda de un patrón consiste en chequear cada posible posición en el texto en donde el patrón puede encontrarse. El programa busca de esta forma la ocurrencia del patrón p[1..M] en el string de texto a [1..N]
Bueno este algoritmo estaba, el un libro que leí hace un tiempo, que se llama, Algoritmos, datos, y programas....
SAludos
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?
Cita de: Ferno en 31 Diciembre 2010, 03:07 AM
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?
Es pascal, y no C, en pascal para asignarles valores a las variables se usa :=..
SAludos
Cita de: Ferno en 31 Diciembre 2010, 03:07 AM
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?
Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.
if a[i] := p[j] then begin //sería =
Además, aquí creo que los paréntesis son necesarios.
until (j > M) or (i > N);
Para devolver un valor con una función puedes usar result, en vez del nombre de la función.
Cita de: Khronos14 en 31 Diciembre 2010, 16:19 PM
Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.
if a[i] := p[j] then begin //sería =
Además, aquí creo que los paréntesis son necesarios.
until (j > M) or (i > N);
Para devolver un valor con una función puedes usar result, en vez del nombre de la función.
Muchas Gracias!!
Siempre ha cada segundo se aprende algo...
SAludos..
Feliz Año