Форум программистов, компьютерный форум CyberForum.ru

алгоритм быстрый поиск - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В массиве целых чисел поменять местами минимальный и максимальный элементы http://www.cyberforum.ru/cpp-beginners/thread211282.html
Эту задачу можно как нибудь упростить? #include <stdio.h> #define N 3 #define M 3 struct index{ int i; int j; }min_idx,max_idx;
C++ Одномерный массив Помогите переделать эту задачу так чтобы в самом начале задачи вводился массив))) Вот само условие:Вычислить среднее арифметическое элементов массива Х, расположенных между его минимальным и максимальным значениями. Если минимальный элемент размещается в массиве раньше максимального, то упорядочить массив на данном промежутке по возрастанию его элементов (возможна и обработка ситуации).... http://www.cyberforum.ru/cpp-beginners/thread211279.html
C++ Односвязанные списки
Здравствуйте! Создал односвязанный список, нужно к нему ещё такие методы класса List: 1. Добавление элемента в заданную позицию 2. Удаление с заданной позиции. Помогите, а то запутался с указателями struct ele {
Массив структур C++
Пожалуйста, помогите с программой. Задание: разработать программу , позволяющую добавлять данные структур с указанными полями в массив. Поля структуры: тип компьютера, год выпуска, цена. Операция: удалить все компьютеры с заданным годом выпуска.
C++ отладить программу! http://www.cyberforum.ru/cpp-beginners/thread211255.html
Помогите пожалуйста завтра нужно сдать. Программы не правильный ответ выдает. Даны четыре массива A B C D. Вывести на печать массив с минимальной суммой печатных элементов расположенных ниже побочной диагонали массива #include<conio.h> #include<stdio.h> #include<stdlib.h> #define n 5 main() { int a,b,v,g; int i,j,k,sum,min; clrscr();
C++ Теория Поясните мне, есл можете, что значит Описание используемых структур данных. в графе. P S оформляю отчет по курсовой подробнее

Показать сообщение отдельно
sylar156
Сообщений: n/a
14.12.2010, 23:01     алгоритм быстрый поиск
нашел в интернете описание алгоритма быстого поиска

Быстрый поиск
Сдвиг плохого символа, используемый в алгоритме Боуера - Мура, не очень эффективен для маленького алфавита, но, когда размер алфавита большой по сравнению с длиной образца, как это часто имеет место с таблицей ASCII и при обычном поиске в текстовом редакторе, он становится чрезвычайно полезен. Использование в алгоритме только его одного может быть весьма эффективным.

После попытки совмещения x и y [ i , i + m - 1 ], длина сдвига - не менее 1. Таким образом, символ y [ i + m ] обязательно будет вовлечен в следующую попытку, а значит, может быть использован в текущей попытке для сдвига плохого символа. Модифицируем функцию плохого символа, чтобы принять в расчет последний символ х:

bc[ a ] = min { j | 0 <= j <= m и x[ m - 1 - j ] = a }, если a встречается в x,

bc[ a ] = m в противоположном случае.

Сравнения текста и образца могут производиться в любом порядке. Несмотря на маловероятный худший случай, алгоритм демонстрирует прекрасное поведение на практике.


функция OUTPUT возвращает позицию начала совпадения относительно начала текста.

константа ASIZE - размер алфавита
реализация на C

Код
void QS( char *y, char *x, int n, int m)
{
 int i, qs_bc[ ASIZE ];
 
 /* Preprocessing */
 for ( i = 0; i < ASIZE; i++ ) qs_bc[ i ] = m + 1;
 for ( i = 0; i < m; i ++ ) qs_bc[ x[i] ] = m - i;
 
 /* Searching */
 i = 0; 
 while ( i <= n - m ) {
    if ( memcmp( &y[ i ], x, m ) == 0 ) OUTPUT( i );
   i += qs_bc[ y[ i + m ] ];             /* shift */
 }
}


возник вопрос
как реализовать функцию output ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru