Си: задание по строкам.

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
ydantezs
Сообщения: 6
Зарегистрирован: 25 май 2010, 13:59

Даны две строки А и В. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять). Не пойму суть алгоритма, кто может обьясните или решите.
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Создаешь массив счетчиков для подсчета символов в строке А. Обнуляешь. Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика. После подсчета проходим по строке В и делаем декремент соответствующего счетчика, при это проверяем если текущий счетчик стал меньше 0 после декремента то досрочно выходим с сообщение что составить строку нельзя. Если выход не произошел до окончания строки В то пишем что составить можно и выходим.
ydantezs
Сообщения: 6
Зарегистрирован: 25 май 2010, 13:59

"Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика." - непонятно, как будет виглядеть цикл? Его граница - Длина А?
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Его граница - Длина А
ydantezs
Сообщения: 6
Зарегистрирован: 25 май 2010, 13:59

как это "Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика."
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Приблизительно так:

Код: Выделить всё

int count_char[256];
memset(count_char, 0, sizeof(count_char);
char * s = "aklsdhufalwsfk";
char * s_t = s;
while (* s_t != 0)
{
  count_char[*s_t]++;
  s_t++;
}
Ответить