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