叠筐-题解

描述

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。
这个工作现在要让计算机来完成,得看你的了。

输入描述

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
输入0的时候停止

输出描述

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;

int main(){
int n;
char a, b;
int tmp[100][100];

while (cin >> n >> a >> b){
for (int i = 1, j = 1; i <= n; i += 2, j++){
int x = n / 2 + 1, y = x;
x -= j - 1;
y -= j - 1;
char c = j % 2 == 1 ? a : b;
for (int k = 1; k <= i; k++){
tmp[x + k - 1][y] = c;
tmp[x][y + k - 1] = c;
tmp[x + i - 1][y + k - 1] = c;
tmp[x + k - 1][y + i - 1] = c;
}
}

if (n != 1){
tmp[1][1] = ' ';
tmp[n][1] = ' ';
tmp[1][n] = ' ';
tmp[n][n] = ' ';
}

for (int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
cout << char(tmp[i][j]);
}
cout << endl;
}
cout << endl;
}
return 0;
}

叠筐-题解
https://chenxi-tijie.pages.dev/2025/07/叠筐-题解/
作者
chenxi
发布于
2025年7月4日
许可协议