P9946 题解
用数组 \(a\) 存储单词,数组 \(b\) 存储对应单词的长度,然后用一个变量 \(cnt\) 循环加上 \(b_i\),如果此时 \(cnt \le k\),输出 \(a_i\);否则,换行输出 \(a_i\),并清空 \(cnt\),再加上此时的 \(b_i\)。
#include<bits/stdc++.h>
using namespace std;
string a[105];
int n, k, b[1145141], cnt = 0;
int main() {
cin >> n >> k;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
b[i] = a[i].size();
}
for (int i = 1; i <= n; ++i) {
cnt += b[i];
if (cnt <= k) cout << a[i] << ' ';
else {
cout << '\n' << a[i] << ' ';
cnt = 0;
cnt += b[i];
}
}
return 0;
}

浙公网安备 33010602011771号