传送门
这道题最快速的解法是根据y总的曼哈顿找距离法(曼哈顿距离是指的横纵坐标差绝对值的和),这里我们根据0所在的位置来找距离。那么这个距离≤2的都打上星花;否则打空格,每一行循环完以后来个换行。
代码:
#include<bits/stdc++.h>
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(i-cx)+abs(j-cy)<=n/2) printf("*");
else printf(" ");
}
cout<<endl;
}
return 0;
}