题解 三

好家伙,我刚刚在学校OJ上面AC了一道,我又来写题解啦!感觉写题解是真的好玩,对自己也很有帮助我觉得,哈哈哈!废话不多说,我们进入正题
题目名字:
题目来源:江西理工大学OJ
题目地址:https://oj.ismdeep.com/problems/1003

题目描述
木木无聊的时候就喜欢画木字
当 n=1的时候,画出来的图形是
在这里插入图片描述

当 n=2的时候,画出来的图形是
在这里插入图片描述

当 n=3的时候,画出来的图形是
在这里插入图片描述

……依次类推

现在已知n(1<=n<=30)的值.要你画图
输入
有多组测试数据,每组测试数据输入一个正整数n(1<=n<=30)。
当n=0的时候表示输入结束,你不需要处理这组数据

输出
请按照题中给出的规律画出图形。

样例输入
2
4
5
0
样例输出
在这里插入图片描述
(博客写文章时的“*”号有特殊作用,所以这里的样例都是放的图片哈)

好了,言归正传。这个题目是一个找规律的题目吧,一开始我看到这个题目,诶,我发现了一丝丝规律,但那只是局部的规律,我在想,这种题目好像大概都是全局规律比较多吧,然后我就一直想找一个全局性的规律,但是我找了一会儿发现我找不到,然后我就想想算了吧,先局部找点规律试试看,一点点的敲出来也不是不可以哈!然后我就进入了摸索,首先我观察了一下,这道题的规律大体分为两种哈,以中间的长“*”段为分界,上面用一种规律,下面用另一种规律。上面的规律就比较简单了哈,就是n为多少,那么左右就各有几个".",中间放一个“*”,然后重复n行。下面的规律其实比较明显,但是你会发现如果你用统一的语言概括性的去描述的话,没有那么好描述,因为它其实还是存在局部性的,所以我索性再分,将外侧的"."(即✳外侧的点)作为一部分,✳内侧的点作为一部分,各自观察规律分别输出。为什么要这样呢,因为我愚蠢,短时间内只想到这个办法哈哈哈 ,可以观察到,下半部分每行✳都是三个,共计n行,所以这样子一分析,然后分段来操作就出来啦!

说了这么多,上代码!

#include <iostream>
using namespace std;
int main()
{
	int n;
	for (;;)
	{
		cin >> n;
		if (n == 0)
			break;
		for (int i = 1; i <= n; i++)
		{
			for (int k = 1; k <= n; k++)
				cout << ".";
			cout << "*";
			for (int k = 1; k <= n; k++)
				cout << ".";
			cout << endl;
		}//这上面是上半部分的操作
		for (int i = 1; i <= 2 * n + 1; i++)
			cout << "*";//这里是*号界限
		cout << endl;
		int dian1 = n - 1;
		int dian2 = 0;
		for (int i = n; i >= 1; i--)//你会看到,我的操作其实比较长,但是易懂
		{
			for (int j = dian1; j >= 1; j--)
			{
				cout << ".";
			}
			cout << "*";
			for (int j = dian2; j >= 1; j--)
			{
				cout << ".";
			}
			cout << "*";
			for (int j = dian2; j >= 1; j--)
			{
				cout << ".";
			}
			cout << "*";
			for (int j = dian1; j >= 1; j--)
			{
				cout << ".";
			}
			cout << endl;
			dian1--;
			dian2++;
		}
		cout << endl;
	}//这上面是下半部分的操作
	return 0;//愉快的返回0结束啦!
}

解释了这么多,你还别说,真累,你们应该也懂那种做自己喜欢的事情的那种愉悦吧!虽然说写题解需要花一些时间,但是真的值!以后难的题目多了,写题解很有助于记忆!
嘿嘿,我又我的目标更近了一步!
好了,每篇题解最后都要附上一句话

乘风破浪会有时,直挂云帆济沧海

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值