Le parole in input vengono elaborate in sequenza, nell'ordine in cui arrivano. La parola successiva viene aggiunta alla riga corrente se la lunghezza totale delle parole in essa contenute, inclusa quella da aggiungere, non supera . In caso contrario, la riga corrente viene terminata e la parola viene stampata a partire da una nuova riga.
Implementazione dell'algoritmo
Leggiamo le parole in input in un array .
char s[100];Leggiamo i dati in input.
scanf("%d %d", &n, &k);La variabile memorizza la lunghezza corrente della riga da stampare.
ptr = 0;Leggiamo in sequenza parole.
while (n--)
{Leggiamo la parola successiva e ne troviamo la lunghezza .
scanf("%s", s);
len = strlen(s);Se ptr + len \le k, allora la parola può essere stampata nella riga corrente. La lunghezza della riga stampata non supererà caratteri.
if (ptr + len <= k)
{
ptr += len;
printf("%s ", s);
}Altrimenti la parola deve essere stampata su una nuova riga. Poniamo la lunghezza della nuova riga uguale a .
else
{
ptr = len;
printf("\n%s ", s);
}
}Implementazione dell'algoritmo – string
Leggiamo i dati in input.
cin >> n >> k;La variabile memorizza la lunghezza corrente della riga da stampare.
ptr = 0;Leggiamo in sequenza parole.
while (n--)
{Leggiamo la parola successiva e ne troviamo la lunghezza .
cin >> s;
len = s.size();Se ptr + len \le k, allora la parola può essere stampata nella riga corrente. La lunghezza della riga stampata non supererà caratteri.
if (ptr + len <= k)
{
ptr += len;
cout << s << " ";
}Altrimenti la parola deve essere stampata su una nuova riga. Poniamo la lunghezza della nuova riga uguale a .
else
{
ptr = len;
cout << endl << s << " ";
}
}Implementazione Python
Leggiamo i dati in input.
n, k = map(int, input().split())
s = input().split()La variabile memorizza la lunghezza corrente della riga da stampare.
ptr = 0Scorriamo le parole nella lista .
for w in s:Calcoliamo la lunghezza della parola .
lw = len(w)Se ptr + lw \le k, allora la parola può essere stampata nella riga corrente. La lunghezza della riga stampata non supererà caratteri.
if ptr + lw <= k:
ptr += lw
print(w, end=" ")Altrimenti la parola deve essere stampata su una nuova riga. Poniamo la lunghezza della nuova riga uguale a .
else:
ptr = lw
print()
print(w, end=" ")