代码源 [R10C]多重回字
// 11111111111.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
题目信息
题目链接: https://bs.daimayuan.top/p/57
题目名称: #57. [R10C]多重回字
题目类型: 模拟、字符串、构造
时空限制: 1秒/512MB
难度: 2
题目描述
给定奇数 n,请你用 # 和空格画一个 n×n 的多重回字。
具体来说,最外面一层是由 # 组成的正方形,向内一层是空格组成的正方形,再向内一层又是 # 组成的正方形,以此类推。
输入格式
第一行包含一个整数 n 表示多重回字的边长。数据保证 n 是奇数。
输出格式
输出一个 n×n 的由 # 和空格组成的多重回字,格式见样例。
输入
7
输出
#######
# #
# ### #
# # # #
# ### #
# #
#######
输入
9
输出
#########
# #
# ##### #
# # # #
# # # # #
# # # #
# ##### #
# #
#########
对于100% 的数据,3≤n≤1999。数据保证 n 是奇数。
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int n;
int main()
{
cin >> n;
string line(n, '#');
string left, mid=line, right; int linetype = 1;
vector<string> vv; vv.push_back(line);
for (int i = 1; i <= n / 2; i++) {
int len = mid.length() - 2;
if (linetype == 1) {
mid = string(len,' ');
left.push_back('#');
right.insert(right.begin(), '#');
linetype = 0;
}
else {
mid = string(len, '#');
left.push_back(' ');
right.insert(right.begin(), ' ');
linetype = 1;
}
line = left + mid + right;
vv.push_back(line);
}
for(int i = 0; i <= n / 2; i++) {
cout << vv[i] << endl;
}
for(int i= n / 2 -1 ; i >= 0; i--) {
cout << vv[i] << endl;
}
return 0;
}
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
浙公网安备 33010602011771号