巧妙打印对称图案

这篇博客介绍了两种绘制对称图案的方法。第一种利用线性规划的数学原理,第二种则是基于图案的对称性,通过分析得出每行的空格数量规律。博主展示了两种方法的运行效果。
摘要由CSDN通过智能技术生成

算法:

第一个的代码的思想是以前从网上看到的,原理很简单,就是利用高中数学中线性规划的知识;               第二个代码是利用图案的对称关系,其总共有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;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值