解题思路:
UN@`9(8SBF(U_T[4%M{RERU.png

①先初始化中心十字架的左半部分,十字架的大小是5*5,注意此处十字架的大小是固定的。

②将左半部分斜着的5条线进行填充,接着对上班部分和左半部份的直线进行填充,围几层就填充几条线,填充个数是2*i(i是层数)。
③将左上角对称填充到左下角。然后将左半部分对称填充到右半部分。

注意事项:
图片引用自  作者: tongxian      侵权可删

参考代码:

def function(n):  
    A = [['.' for j in range(5+4*n)] for i in range(5+4*n)]  
    if n == 0:  
        for i in range(5):  
            A[2][i] = '$'  
            A[i][2] = '$'  
  
    for k in range(3):  
        x = int((5+4*n+1)/2)-1  
        y = int((5+4*n+1)/2)-1-k  
        A[x][y] = '$'  
  
        xmove = x  
        ymove = y  
        for kk in range(n):  
            xmove = xmove-2  
            ymove = ymove-2  
            A[xmove][ymove] = '$'  
  
    for k in range(3):  
        x = int((5+4*n+1)/2)-1-k  
        y = int((5+4*n+1)/2)-1  
        A[x][y] = '$'  
  
        xmove = x  
        ymove = y  
        for kk in range(n):  
            xmove = xmove-2  
            ymove = ymove-2  
            A[xmove][ymove] = '$'  
  
    for i in range(1,n+1):  
        num = 2*i  
        x = int((5+4*n+1)/2)-1-2 - num  
        y = int((5+4*n+1)/2)-1  
  
        xmove = x  
        ymove = y  
        for j in range(num):  
            A[xmove][ymove] = '$'  
            xmove = xmove  
            ymove = ymove-1           
  
    for i in range(1,n+1):  
        num = 2*i  
        x = int((5+4*n+1)/2)-1  
        y = int((5+4*n+1)/2)-1-2 - num  
  
        xmove = x  
        ymove = y  
        for j in range(num):  
            A[xmove][ymove] = '$'  
            xmove = xmove-1  
            ymove = ymove  
    
    for j in range(int((5+4*n+1)/2)):  
        for i in range(int((5+4*n+1)/2)-2,-1,-1):  
            A[5+4*n-1-i][j] = A[i][j]  
  
    for i in range(5+4*n):  
        A[i][int((5+4*n+1)/2):] = A[i][int((5+4*n+1)/2)-2::-1]  
   
    for i in range(5+4*n):  
        for j in range(5+4*n):  
            print(A[i][j],end='')  
        print()  
  
  
if __name__ == '__main__':  
    n = int(input())  
    function(n)

 

点赞(0)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论