1 条题解
-
0
自动搬运
来自洛谷,原作者为

yummy
这个人是时代的眼泪,什么也没有留下搬运于
2025-08-24 21:17:17,当前版本为作者最后更新于2025-01-20 14:16:45,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
本题考查循环的综合应用,对选手分析题目、拆解结构的能力也提出了一定要求。
我们可以通过循环嵌套实现二维图形的输出。外层循环枚举行号 ,而内层循环可以分为横杠和三角形分开写。
for(int i=1;i<=n;i++){ for(int j=1;j<=lbar;j++) // lbar 是矩形宽 // 矩形部分 for(int j=1;j<=(n+1)/2;j++) // 三角形部分 printf("\n"); }确定矩形形状
三角形的水平宽度为 ,所以矩形部分的水平宽度 。
接下来考虑矩形部分哪些行是
#,哪些行是.。由于横杠一共 行,上下部分留白一样高,所以矩形部分留白高度为 。由此可知矩形部分输出
#的等价条件是(n-k)/2 < i && i<= n-(n-k)/2。确定三角形形状
这一部分可以通过找规律等方法简化思考。
前 行内,第 行会输出 个
#,因此输出#的条件是 。后面的行内,第 行会输出 个
#,因此输出#的条件是 。但是实际写的时候,你不需要分类讨论 在哪个半边(上半边还是下半边),只要把两个条件用
&&连接即可。不难发现,在一个半边生效的条件,在另一个半边总是自然生效的。
- 1
信息
- ID
- 11329
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者