在本题中可以应用曼哈顿距离进行解题,即当平面上各点到菱形中心点的横、纵距离之和小于等于n/2(也即|Xi-Xz|+|Yi-Yz|<=n/2)时,输出" * ",否则输出空格((Xz,Yz)为待打印菱形的中心点)
输入一个奇数n,输出一个由‘*’构成的n阶实心菱形。
输入格式:
一个奇数n。
输出格式:
输出一个由" * "构成的n阶实心菱形。
样例1:
输入样例:
5
输出样例:
*
***
*****
***
*
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
int n;
cin>>n;
int xz=n/2,yz=n/2;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(abs(i-xz)+abs(j-yz)<=n/2) printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
如有问题,欢迎在评论区提问