问题 3882 --电脑画画(完善程序)

3882: 电脑画画(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 186  解决: 71
[提交][状态][命题人:]

题目描述

观察样例,按照规则绘制图案。

n=1:

  *   
 ***  
*****

n=2:

     *      
    ***     
   *****    
  *     *   
 ***   ***  
***** *****
方法一的代码:
#include <iostream>
using namespace std; 
int main() 
{
    int n;
    cin>>n; 
    for(int i=1,p=_____(1)_____;i<=n;i++)//i表示一共有几层 
    {
        for(int k=1,t=____(2)___;k<=3;k++,t-=2)//k表示每层有3行,t表示三角形之间的空格数 
        {
    	    cout<<string(p--,' ');//每行最左边的空格数 
            cout<<string(2*k-1,'*');
            for(int j=2;j<=_____(3)_____;j++)
                cout<<string(_____(4)______,' ')<<string(____(5)_____,'*');
            cout<<endl;//每行换行 
        }
    }
}

方法二的代码:
#include <cmath>
#include <cstdio>
using namespace std; 
bool InTriangleQ(int h, int x, int y) { return abs(x - h + 1) <= y; }
bool Draw(int n, int x, int y) {
    return InTriangleQ(____1____, x, y) &&
           InTriangleQ(3, ____2____, ____3____);
}
int main() {
    int n;
    scanf("%d", &n);
    for (int y = 0; y < ____4____; y++) {
        for (int x = 0; x < ____5____; x++) {
            printf(Draw(n, x, y) ? "*" : " ");
        }
        puts("");
    }
}

输入

正整数 n (1 <= n <= 256)

输出

图案

样例输入
Copy
4
样例输出
Copy
           *            
          ***           
         *****          
        *     *         
       ***   ***        
      ***** *****       
     *     *     *      
    ***   ***   ***     
   ***** ***** *****    
  *     *     *     *   
 ***   ***   ***   ***  
***** ***** ***** *****

提示

来源

[提交][状态]