输入一个奇数 n,输出一个由 * 构成的 n 阶实心菱形。
输入格式
一个奇数 n。
输出格式
输出一个由 * 构成的 n 阶实心菱形。
分析:菱形的几何特征是四条边等长,可以想见在一个n阶矩阵里,n阶菱形的位置是与n阶矩阵中心位置相关。
这里用到了曼哈顿距离,p1(x1,y1) p2(x2,y2)则 p1,p2的曼哈顿距离为abs(x1-x2)+abs(y1-y2);
在本题中,曼哈顿距离<=n/2即可确定输出”*”的范围
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int x = n/2,y = n/2;
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
if(abs(x-i)+abs(y-j)<=n/2) cout<<"*";
else cout << " ";
}
cout<<endl;
}
return 0;
}