看到带有空格的字符串,需要练就下意识用getline。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
string s;
int n,k;
//string st[N];
struct node{
string st;
int len;
}st[N];
int j;
int main(){
cin >> n >> k;
getchar();
getline(cin,s);
// cin >> s;
string t ="";
for(int i = 0; i < s.size(); i++){
if(s[i]!=' '){
t += s[i];
}
else{
st[j].st = t;
st[j++].len = t.size();
t = "";
}
}
if(t != "") st[j].st = t,st[j++].len = t.size();
// for(int i = 0; i < j; i++){
// cout << st[i].st <<" " << st[i].len << endl;
// }
int kk = k;
st[j].len = 0x3f3f3f3f;
for(int i = 1; i <= j; i++){
if(st[i-1].len + st[i].len <= kk){
cout << st[i-1].st <<" ";
kk -= st[i - 1].len;
}
else if((st[i - 1].len + st[i].len > kk ) && st[i - 1].len <= kk){
cout << st[i - 1].st << endl;
kk = k;
}
}
return 0;
}