Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2014, 21:47   #1
KONDR1996
 
Регистрация: 26.11.2014
Сообщений: 5
По умолчанию Прокомментируйте программу,если не сложно

Код:
char t[500005], p[250005];
int fl[500005];

void pre () {
	fl[0] = fl[1] = 0;
	for (i = 2; i<n; i++) 
	{
		fl[i] = fl[i-1]; 
		while(fl[i] && p[fl[i]] != p[i-1])
			fl[i] = fl[fl[i]];
		if (p[fl[i]] == p[i-1]) 
			fl[i]++;
	}
	if (p[fl[i]] == p[i-1]) 
		fl[i]++;
}

int match () {
	for (int j = 0, cp = 0; j<2*n; j++) {
		while(cp && p[cp] != t[j])
			cp = fl[cp];
		if (p[cp] == t[j] && ++cp == i) {
			cp = fl[i];
			return j + 1 - i;
		}
	}
	return -1;
}
int main()
{
	scanf_s("%d",&n);
	getchar();
	gets_s(p);
	gets_s(t);
	strncpy(t+n,t,n);
	pre ();
	printf ("%d\n", match ());
	system("pause");
	return 0;
}

Последний раз редактировалось Stilet; 26.11.2014 в 21:52.
KONDR1996 вне форума Ответить с цитированием
Старый 27.11.2014, 18:13   #2
Zenon
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 32
По умолчанию

Комментирую:
- в программе не хватает комментариев автора о том, что этот код делает.
как и в теме
Zenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправте если не сложно Kot070 Помощь студентам 18 11.02.2013 16:29
найдите ошибку если не сложно Alex0161 Общие вопросы C/C++ 4 19.12.2011 00:14
найдите ошибку если не сложно Ольга790 Общие вопросы C/C++ 3 18.12.2011 16:11
Если не сложно Vladimir Ryabov Паскаль, Turbo Pascal, PascalABC.NET 1 27.11.2011 15:07