Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово? - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать программу,завтра нужно сдавать.Условие:в заданной строке записаны 3 слова.Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово.
Очень надо,срочно.Заранее спасибо!
Решение задачи: «Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово?»
textual
Листинг программы
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const int SIZE = 128;
char word1[SIZE], word2[SIZE], word3[SIZE];
cin >> word1 >> word2 >> word3;
int a[26], b[26], c[26];
for (int i = 0; i < 26; i++)
a[i] = b[i] = c[i] = 0;
for (int i = 0; i < strlen(word1); i++)
a[toupper(word1[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
for (int i = 0; i < strlen(word2); i++)
a[toupper(word2[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
for (int i = 0; i < strlen(word3); i++)
a[toupper(word3[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
bool flag = true;
for (int i = 0; i < 26; i++)
{
if (a[i] + b[i] < c[i])
{
flag = false;
break;
}
}
if (flag)
cout << "YES";
else cout << "NO";
return 0;
}
Объяснение кода листинга программы
- В начале определяются три строки-переменные: word1, word2, word3, которые предназначены для ввода первых трех слов.
- Далее определяются три массива-переменные: a, b, c, которые предназначены для подсчета количества букв в каждом слове.
- В первой тройке циклов происходит заполнение массивов a, b, c. В каждой итерации происходит увеличение счетчика для соответствующей буквы в каждом слове.
- Во второй тройке циклов происходит сравнение количества букв в каждом слове. Если сумма букв в word2 и word3 меньше, чем количество букв в word1, то флаг устанавливается в false и выполнение программы прерывается.
- В последней тройке циклов проверяется значение флага. Если он равен true, то выводится
YES, иначе выводитсяNO. - В конце программы указывается, что функция main() возвращает 0, что означает успешное завершение программы.