Вхідні слова обробляються послідовно, у порядку їх надходження. Чергове слово додається до поточного рядка, якщо сумарна довжина слів у ньому, включно з тим, що додається, не перевищує . В іншому випадку поточний рядок завершується, і слово виводиться з нового рядка.
Реалізація алгоритму
Вхідні слова читаємо в масив .
char s[100];Читаємо вхідні дані.
scanf("%d %d", &n, &k);Змінна зберігає поточну довжину рядка, що виводиться.
ptr = 0;Послідовно читаємо слів.
while (n--)
{Читаємо чергове слово і знаходимо його довжину .
scanf("%s", s);
len = strlen(s);Якщо ptr + len \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.
if (ptr + len <= k)
{
ptr += len;
printf("%s ", s);
}Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .
else
{
ptr = len;
printf("\n%s ", s);
}
}Реалізація алгоритму – string
Читаємо вхідні дані.
cin >> n >> k;Змінна зберігає поточну довжину рядка, що виводиться.
ptr = 0;Послідовно читаємо слів.
while (n--)
{Читаємо чергове слово і знаходимо його довжину .
cin >> s;
len = s.size();Якщо ptr + len \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.
if (ptr + len <= k)
{
ptr += len;
cout << s << " ";
}Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .
else
{
ptr = len;
cout << endl << s << " ";
}
}Python реалізація
Читаємо вхідні дані.
n, k = map(int, input().split())
s = input().split()Змінна зберігає поточну довжину рядка, що виводиться.
ptr = 0Перебираємо слова у списку .
for w in s:Обчислюємо довжину слова .
lw = len(w)Якщо ptr + lw \le k, то слово можна вивести в поточному рядку. Довжина рядка, що виводиться, не перевищить символів.
if ptr + lw <= k:
ptr += lw
print(w, end=" ")Інакше слово слід вивести в новому рядку. Довжину нового рядка покладемо рівною .
else:
ptr = lw
print()
print(w, end=" ")