欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

1325:星号阵列3

程序员文章站 2022-06-15 23:12:32
1325:星号阵列3描述输出一个边长为 m 的正六边形。输入一个正整数 m 代表正六边形的边长。(2 <= m <= 20)输出一个边长为 m 的正六边形,每行最后一个星号后面没有空格,最后一行输出完成以后也要换行。样例输入3样例输出 ***** * * * * * * *****#include...

1325:星号阵列3

描述
输出一个边长为 m 的正六边形。
输入
一个正整数 m 代表正六边形的边长。(2 <= m <= 20)
输出
一个边长为 m 的正六边形,每行最后一个星号后面没有空格,最后一行输出完成以后也要换行。
样例输入
3
样例输出

                *****
               *     *
              *       *
               *     *
                *****
#include <iostream>
using namespace std;
int main()
{
	int m;
	cin >> m;
	for (int i = 1; i <= 2*m-1; i++)
	{
		for (int j = 1; j <= 3*m-2; j++)
		{
			if (i + j == m + 1 || ((m <= j && j <= 2 * m - 1) && (i == 1)) || ((m <= j && j <= 2 * m - 1) && (i == 2 * m - 1)) || i + j == 4 * m - 2 || i == j + m - 1 || j == i + 2 * m - 2)
			{
				cout << "*";
			}
			else if (i + j < m + 1 || (i > m && i <= 2 * m - 1 && i > j + m - 1) || (i + j > m + 1 && i < j + m - 1 && i>1 && i < 2 * m - 1 && i + j < 4 * m - 2 && i < j + m - 1 && j < i + 2 * m - 2))
			{
				cout << " ";
			}
		}
		cout << endl;
	}
	return 0;
}

总结
鄙人不才…只能想出用数学的暴力求解…这个规律有点把我自己绕晕了…不过最后还是磕磕碰碰地写出来了…若有更好的方法请指正0.0

本文地址:https://blog.csdn.net/Jackey_tao/article/details/109269120