题目描述
输入一个奇数n,输出一个由‘*’构成的n阶实心菱形。
别问,问就是找规律。
弱鸡C++ 代码
算法1 普通算法
这可以分为由中间分开成为的两个三角形(中间归为上面的三角形(废话))。
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
if(i<(n+1)/2)//判断是否在上面的三角形
{
for(int j=0;j<(n-1)/2-i;j++) cout<<" ";
for(int j=0;j<i*2+1;j++) cout<<"*";
}
else
{
for(int j=0;j<i-(n-1)/2;j++) cout<<" ";
for(int j=0;j<(n-i)*2-1;j++) cout<<"*";
}
cout<<endl;
}
}
算法2 优化版绝对值算法
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=-n/2;i<=n/2;i++)
{
for(int j=0;j<abs(i);j++) cout<<" ";
for(int j=0;j<=2*(n/2-abs(i));j++) cout<<"*";
cout<<endl;
}
}