01.求解菱形问题
程序员文章站
2022-05-06 10:05:20
...
题目描述
输入一个奇数n,输出一个由‘*’构成的n阶实心菱形。
输入格式
一个奇数n。
输出格式
输出一个由‘*’构成的n阶实心菱形。
具体格式参照输出样例。
数据范围
1≤n≤991≤n≤99
输入样例:
5
输出样例:
*
***
*****
***
*
解题思路
- 打印n阶菱形,其实本质在于找到其在矩阵中的规律。
- 本题中我将介绍怎样用曼哈顿距离去解决该类问题。
曼哈顿距离概念
进行找规律
- 计算各点坐标与中心点的曼哈顿距离,得到规律。
- 曼哈顿距离小于
n/2
的,输出*
,否则输出空格
代码实例
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int cx = n/2,cy = n/2; //中心点坐标
for (int i = 0;i< n;i++)
{
for (int j = 0;j < n;j++)
if (abs(i-cx)+abs(j-cy) <= n/2) //曼哈顿距离小于n/2
cout << "*";
else cout << ' ';
cout << endl;
}
return 0;
}