[Daimayuan]特殊的正方形(C++)
创始人
2025-05-30 12:21:52

输入nnn,输出nnn行nnn列的由+.组成的正方形,其中最外面一圈全是+,第二圈全是.,…,对于第iii圈,如果iii是奇数,那么全是+,否则全是.

输入格式

一行,一个整数nnn。

输出格式

nnn行,为满足题目要求的正方形。注意不要有行末空格。

样例输入

10

样例输出

++++++++++
+........+
+.++++++.+
+.+....+.+
+.+.++.+.+
+.+.++.+.+
+.+....+.+
+.++++++.+
+........+
++++++++++

数据范围

对于100100100%的数据,保证2≤n≤1002≤n≤1002≤n≤100

解题思路:

虽然本题数据范围不大,可以直接实现数组存储,然后输出

但这里仍然采用无存储的方式实现

二维图形输出,自然采用二重循环实现

关键在于如何调整输出.还是+

这里通过两条对角线来实现调整

每次输出前反转两条对角线之间要输出的符号,我们具体模拟一下来说明

初始化输出模式..........

然后我们来到第一行,反转之后的输出模式++++++++++

然后我们来到第二行,反转之后的输出模式+........+

然后我们来到第三行,反转之后的输出模式+.++++++.+

是不是很好理解?但是没有结束,我们需要特殊处理

因为当前每一次循环执行的动作是简单的:反转,然后输出

但是如果这样的话,前半段输出是对的,后半段就会出现错误,如下

++++++++++
+........+
+.++++++.+
+.+....+.+
+.+.++.+.+
+.+....+.+
+.++++++.+
+........+
++++++++++
..........

所以我们稍微调整一下:

(1)前半段:反转,然后输出

(2)后半段:输出,然后反转

最后,AC代码如下

#include 
using namespace std;
const int max_n = 100;char pattern[max_n];	//每行的输出模式
bool save[max_n];		//处理模式的调整//反转
inline void reverse(char& c) {if (c == '.') c = '+';else c = '.';
}int main() {int n;bool change = false;cin >> n;for (int i = 0; i < n; i++) pattern[i] = '.';//初始化for (int i = 0; i < n; i++) {if (save[i]) {//后半段:先输出,后反转cout << pattern << endl;for (int j = 0; j < n; j++) {if (i == j || i + j == n - 1) {//判断对角线save[i] = save[n - i] = true;change = !change;reverse(pattern[j]);j++;while (change) {reverse(pattern[j]);if (i == j || i + j == n - 1) {//判断对角线change = !change;}else {j++;}}}}}else {//前半段:先反转,后输出int j;for (j = 0; j < n; j++) {//特殊判定:如果对角线交于一点if (i == j && i + j == n - 1) {reverse(pattern[i]);}else {//常规if (i == j || i + j == n - 1) {//判断对角线save[i] = save[n - 1 - i] = true;change = !change;reverse(pattern[j]);j++;while (change) {reverse(pattern[j]);if (i == j || i + j == n - 1) {//判断对角线change = !change;}else {j++;}}}}}cout << pattern << endl;if (i == n / 2) {//特殊判定:如果对角线交于一点reverse(pattern[i]);}}}return 0;
}

相关内容

热门资讯

华北南部黄淮等地霾天气逐渐减弱... 转自:央视网央视网消息:据中央气象台网站消息,受冷空气影响,20日,华北南部、黄淮、江淮、江汉、江南...
SpaceX罕见披露:一卫星疑... 转自:北京日报客户端据路透社19日报道,美国太空探索技术公司(SpaceX)表示,其旗下“星链”(S...
耳朵总是痒可能暗示这5种问题 ... 转自:央视新闻  在我们日常生活中,有时候会遇到一种微妙的困扰:耳朵痒。  对许多人来说,这似乎只是...
山东攻克六大地质领域14项关键...   今天(12月19日)上午,山东省政府新闻办举行新闻发布会,介绍山东加快构建地质关键技术体系,服务...
灾后一年半,见证资兴新生   4月7日,资兴市兴宁镇集中安置点二期,安置户在领取新房钥匙后看房。李科 摄(湖南图片库)  湖南...