描述
壮壮研学结束后,写了一篇英文论文,这篇论文共有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无用
悬赏问题
- ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
- ¥15 uniapp的h5项目写一个抽奖动画
- ¥15 TeleScan不能修改bar
- ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
- ¥15 hadoop中启动hive报错如下怎么解决
- ¥15 如何优化QWebEngineView 加载url的速度
- ¥15 关于#hadoop#的问题,请各位专家解答!
- ¥15 如何批量抓取网站信息
- ¥15 Spring Boot离线人脸识别
- ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因