思路:找到行标 i 与每行 ‘*’ 、空格个数的关系即可。
时间复杂度没算错的话是o(n²)
c++代码
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int mid=(n+1)/2;//算出菱形中心点位置
int num1,num2;//每行'*'的个数,每行空格的个数
for(int i=1;i<=n;++i){
if(i<=mid)
num1=(i-1)*2+1;
else
num1=(n-i)*2+1;
num2=n-num1;
for(int j=1;j<=num2/2;++j) cout<<" ";
for(int j=1;j<=num1;++j) cout<<"*";
for(int j=1;j<num2/2;++j) cout<<" ";
cout<<endl;
}
return 0;
}