利用曼哈顿距离求出与中心点的距离即可
// 对于5来说: 距离[2,2]坐标中心的*的曼哈顿距离小于2的都打印
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int center = n / 2;
for(int x = 0; x < n;x++)
{
for(int y = 0; y < n;y++)
{
if( abs(x - center) + abs(y-center) <= center)
cout << "*" ;
else
cout << " ";
}
cout << endl;
}
return 0;
}
相似题目:塔
原理一样,也是求曼哈顿距离
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int center = n-1; //中间的索引
for(int i = 0; i <n;i++)
{
for(int j = 0; j < 2*n;j++)
{
int dis = abs( i - center) + abs( j - center);
if( dis<= center)
printf("%c",'A' + center - dis);
else
cout << " ";
}
cout << endl;
}
return 0;
}