云计算百科
云计算领域专业知识百科平台

杭电-叠筐问题

叠筐 ⭐️类型:模拟 ⭐️难度:难

📖题目: 在这里插入图片描述 📖题目链接:叠筐

⭐️思路: 1、一圈一圈画,总共有n/2圈; 2、找出中心(n/2,n/2),从中心开始画,找出每一圈四条边的 起点 和 终点,与 层数 和 n 有关(写四个循环)。

在这里插入图片描述 📚题解:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

using namespace std;

int main() {
int n ;
char in , out;
char arr[100][100] = { 0 };

// 11 B A
// %d %lf .. 忽略空白
// %c 不忽略空白
// 空格%c 忽略空白

while (scanf("%d %c %c", &n, &in, &out) != EOF) {
memset(arr, 0, 10000);
char current = in;
for (int layer = 0;layer <= n / 2;layer++) { // 当前层级,0代表中心
// 当前所画的层的四个角的坐标
// n/2 – layer,n/2 – layer 左上
// n/2 – layer,n/2 + layer 右上
// n/2 + layer,n/2 + layer 右下
// n/2 + layer,n/2 – layer 左下

for (int x = n / 2 layer, y = n / 2 layer;y <= n / 2 + layer; y++) { // 画上边
arr[x][y] = current;
}
for (int x = n / 2 layer, y = n / 2 + layer;x <= n / 2 + layer; x++) { // 画右边
arr[x][y] = current;
}
for (int x = n / 2 + layer, y = n / 2 layer;y <= n / 2 + layer; y++) { // 画下边
arr[x][y] = current;
}
for (int x = n / 2 layer, y = n / 2 layer;x <= n / 2 + layer; x++) { // 画左边
arr[x][y] = current;
}
if (current == in) { // 每画一层换个字符
current = out;
}
else {
current = in;
}
}
// 除去四个角
arr[0][0] = ' ';
arr[0][n 1] = ' ';
arr[n 1][0] = ' ';
arr[n 1][n 1] = ' ';

for (int i = 0;i < n ;i++) {
printf("%s\\n", arr[i]); // 输出一行应用%s
}
}

return 0;
}

赞(0)
未经允许不得转载:网硕互联帮助中心 » 杭电-叠筐问题
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!