您的位置:首页 > 其它

巧妙打印对称图案

2014-04-06 15:33 274 查看
算法:

第一个的代码的思想是以前从网上看到的,原理很简单,就是利用高中数学中线性规划的知识;               第二个代码是利用图案的对称关系,其总共有5*2-1行,分析可知,每行的空格数量是:5-当前行数;每行的空格数量是:行数*2-1;下面最后4行的图案是根据上面4行的图案换算得来的。

运行效果1                   运行效果2





#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
short int n;
while(cin>>n)
{
for(int i=-n; i<=n; i++)
{
for(int j=-n; j<=n; j++)
abs(i)+abs(j) >= n ? cout<<" " : cout<<"*";
cout<<endl;//可适当更改abs(i)+abs(j) 和 n的关系,比如>=
}
}
return 0;
}


#include <iostream>
using namespace std;
int main(void)
{
int n;  //n代表要打印图案的行数(母图)h_1代表行数 h_2也是代表行数 l代表列数。
while(cin>>n)
{
for(int h_1=1,h_2=1; h_1<=2*n-1; h_1++)
{
if( h_1 > n)
h_2 = 2*n - h_1;
else
h_2 = h_1;
for(int l=n-h_2; l>=1; l--)
cout<<" ";
for(int l=1; l<=2*h_2-1; l++)
cout<<"*";
cout<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对称图案