原题题目
代码实现
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int cx=n/2;
int cy=n/2;
for(int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
if(abs(cx-i)+abs(cy-j)<=n/2)cout << "*";
else cout << " ";
}
cout << endl;
}
return 0;
}
重难分析
该题用到了曼哈顿距离,也就是 点(x1,y1) (x2,y2)
曼哈顿距离是:|x1-x2|+|y1-y2|
打印菱形只要在<=n/2之内打印即可。这样做的好处是,无论输入多少,都能打印出来菱形。