描述
壮壮研学结束后,写了一篇英文论文,这篇论文共有N个单词(1≤N≤100),单词之间用空格分隔。
每个单词的长度在1到15之间,仅由大写和小写字母组成。
他想尝试投稿,杂志社给出了一个特殊的排版要求:每一行包含的字符不超过K个(1<= K <=80),空格不计。
请写一个程序,以处理这样的要求,它会按照如下的方式进行排版:
如果壮壮输入了一个单词,这个单词能够放进当前行,就放在当前行;否则,将这个单词放到下一行,然后继续向下一行添加单词;
当然,同一行中的单词之间仍然用一个空格分隔。每一行的结尾都不应当有空格。
输入
输入共两行。
第一行,两个空格分隔的整数N和K。(1 <= N <= 100,1 <= K <= 80)
第二行,包含N个单词,单词之间用单个空格分隔。所有单词的长度都不超过一行中的字符上限数K。
输出
若干行。
按要求输出正确排版的论文。
输入样例 1
10 7
he1lo my name is Zhuang and this is my essay
输出样例 1
hello my
name is
Zhuang
and this
is my
essay
提示
第一行包含7个非空格字符,包括"hello”以及“my"。再加入"name"会使得第一行包含11>7个非空格字符,所以这个单词会被放到下一行。
来源
2023 广西中小学生程序设计挑战赛入门组复赛
语言: C++
(相关搜索:程序设计)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- threenewbee 2023-09-04 23:11关注
#include <stdio.h> #include <string.h> int main() { int N, K; scanf("%d%d", &N, &K); char words[100][100]; for (int i = 0; i < N; i++) scanf("%s", &words[i][0]); int pre = 0; for (int i = 0; i < N; i++) { int curr = strlen(words[i]); if (pre + curr > K) { printf("\n%s", words[i]); pre = curr; } else { if (pre > 0) printf(" "); printf("%s", words[i]); pre += curr; } } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥60 如何批量获取json的url
- ¥15 对法兰连接元件所承受的表面载荷等效转化为法兰开孔接触面上的等效表面载荷?
- ¥15 comsol仿真压阻传感器
- ¥15 Python线性规划函数optimize.linprog求解为整数
- ¥15 llama3中文版微调
- ¥15 pg数据库导入数据序列重复
- ¥15 三分类机器学习模型可视化分析
- ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
- ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
- ¥30 python,LLM 文本提炼