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;

}