B4412 [GESP202509 二级] 菱形
小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个n行n列的字符画,n是一个大于1的奇数。菱形的四个顶点依次位于第1行、第1列、第n行、第n列的正中间,使用绘制。相邻顶点之间也用连接。其余位置都是。例如,一个5行5给定n,请你帮小 A 绘制对应的菱形。
·
用普通循环写法
B4412 [GESP202509 二级] 菱形
题目描述
小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个 nnn 行 nnn 列的字符画,nnn 是一个大于 111 的奇数。菱形的四个顶点依次位于第 111 行、第 111 列、第 nnn 行、第 nnn 列的正中间,使用 # 绘制。相邻顶点之间也用 # 连接。其余位置都是 .。
例如,一个 555 行 555 列的菱形字符画是这样的:
..#..
.#.#.
#...#
.#.#.
..#..
给定 nnn,请你帮小 A 绘制对应的菱形。
输入格式
一行,一个正整数 nnn。
输出格式
输出共 nnn 行,表示对应的菱形。
输入输出样例 #1
输入 #1
3
输出 #1
.#.
#.#
.#.
输入输出样例 #2
输入 #2
9
输出 #2
....#....
...#.#...
..#...#..
.#.....#.
#.......#
.#.....#.
..#...#..
...#.#...
....#....
说明/提示
对于所有测试点,保证 3≤n≤293 \leq n \leq 293≤n≤29 并且 nnn 为奇数。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; // 严格要求
int main(){
ios :: sync_with_stdio(0); // 提高cin、cout的运行速度
ll n;
cin >> n;
ll d1 = (n + 1) / 2;
ll d2 = (n + 1) / 2, d3 = (n + 1) / 2; //d2左列下标 d3右列下标
ll d4 = 2, d5 = n - 1; //d4左列下标 d5右列下标
//上半部分
for(ll i = 1; i <= d1; i++){
for(ll j = 1; j <= n; j++){
if(j != d2 && j != d3){ //不在左列 且 不在右列
cout << ".";
}
else{
cout << "#";
}
}
cout << endl;
d2--;
d3++;
}
//下半部分 (行倒着输出)
for(ll i = 1; i <= d1 - 1; i++){
for(ll j = 1; j <= n; j++){
if(j != d4 && j != d5){ //不在左列 且 不在右列
cout << ".";
}
else{
cout << "#";
}
}
cout << endl;
d4++;
d5--;
}
return 0;
}
更多推荐



所有评论(0)