专栏文章

B4235 [四川青少年 C++ 算法设计大赛 2024] 4-5 年级组第 6 题

B4235题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@mipyoukt
此快照首次捕获于
2025/12/03 20:06
3 个月前
此快照最后确认于
2025/12/03 20:06
3 个月前
查看原文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察循环嵌套。
外面大矩形的边长为 aa,而中间挖掉的正方形的边长为 bb,可以得知:在第 ab2+1\dfrac{a-b}{2}+1 行列到第 a+b2\dfrac{a+b}{2} 行列是需要被挖空的。
以样例的 a=6,b=2a=6,b=2 为例,第 622+1=3\dfrac{6-2}{2}+1=3 行列到第 6+22=4\dfrac{6+2}{2}=4 行列是空的。
因此我们可以计算得到挖空区域的起始和终止位置。
CPP
int st = (a - b) / 2 + 1; // 计算挖空区域的起始位置
int ed = (a + b) / 2;
接着设计一个二重循环,外层 ii 循环行数,内层 jj 循环列数,判断当前位置是否是需要被挖空的即可完成本题。
参考代码(部分):
CPP
for (int i = 1; i <= a; i++) {
    for (int j = 1; j <= a; j++) {
        if (i >= st && i <= ed && j >= st && j <= ed)
            cout << ' ';
        else
            cout << '*';
    }
    cout << endl; // 每行结束后换行
}

评论

2 条评论,欢迎与作者交流。

正在加载评论...