Си: задание по строкам.
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Даны две строки А и В. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В (буквы можно использовать не более одного раза и можно переставлять). Не пойму суть алгоритма, кто может обьясните или решите.
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Создаешь массив счетчиков для подсчета символов в строке А. Обнуляешь. Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика. После подсчета проходим по строке В и делаем декремент соответствующего счетчика, при это проверяем если текущий счетчик стал меньше 0 после декремента то досрочно выходим с сообщение что составить строку нельзя. Если выход не произошел до окончания строки В то пишем что составить можно и выходим.
"Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика." - непонятно, как будет виглядеть цикл? Его граница - Длина А?
-
- Сообщения: 270
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Его граница - Длина А
как это "Проходишь по строке А и для каждого символа делаешь инкремент соответствующего счетчика."
-
- Сообщения: 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++;
}