小T喜欢以一种特殊的方式和朋友小B通信,他们约定采用邮件的方式相互写信。信中的文字只包含大写字母、小写字母组成的单词和空格,两个连续的单词之间有且仅有一个空格。每行文字的最大长度不超过NN个字符,每个单词的长度不超过一行的长度。 小T和小B用来阅读邮件的软件也很特殊,窗口中每行最多可以显示 NN 个字符。显示遵循如下规则: 每个单词中的所有字符都必须出现在同一行(i.e. 不允许跨行连字符); 行尾可能有多余的空格,也可能没有空格; 行首不允许有空格; 显示布局设计会尽可能少的行数显示邮件内容。 简言之,除了不允许加连字符之外,上述规则和其他文本显示软件的换行规则并没有显著差异。 现在的问题是,小T希望知道,任意给定的一段文字会在邮件阅读软件中用多少行显示,你能帮他计算一下吗? 输入数据 输入的第 11 行包含一个整数 QQ ( 1≤Q≤101≤Q≤10 ) 和一个整数 NN ( 1≤N≤10001≤N≤1000 ),NN的意义如上所述。 随后有 QQ 行文本,每行包含一个长度为SiSi的字符串SS,表示邮件的内容, 1≤Si≤1×1071≤Si≤1×107。 输出数据 对每行输入文本,在单独的行中输出一个整数,表示 对应文本显示所需的行数。
时间: 2023-05-11 20:04:10 浏览: 106
这是一个字符串处理的问题,可以按照以下步骤进行计算:
1. 将字符串按照空格分割成单词,存储在一个列表中。
2. 遍历单词列表,将单词逐个添加到当前行中,直到当前行的长度加上下一个单词的长度超过了NN,此时需要换行,并将下一个单词添加到新的一行中。
3. 重复步骤2,直到所有单词都被添加到行中。
4. 输出行数即可。
以下是Python的实现代码:
```python
Q, N = map(int, input().split())
for i in range(Q):
s = input().strip()
words = s.split()
lines = 1
cur_len = 0
for word in words:
if cur_len + len(word) + (1 if cur_len > 0 else 0) > N:
lines += 1
cur_len = 0
cur_len += len(word) + (1 if cur_len > 0 else 0)
print(lines)
```
对于输入的每一行字符串,都会输出一个整数表示所需的行数。
阅读全文