陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯题目思路程序如下总结题目谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应输入格式:输入为两行,分别为地毯大小正…

大家好,又见面了,我是你们的朋友全栈君。

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

题目

谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。

现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。

注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应

输入格式:

输入为两行,分别为地毯大小正整数N与组成元素字符串c

输入数据保证N为3的正整数幂

输出格式:

由N行长度为N*len©的字符串构成的谢尔宾斯基地毯

输入样例:

9

[]
在这里插入图片描述

思路

用递归方法
向最小格式迭代
每次按规律增加图形的长宽

程序如下

def carpet(N, char):
    len_c = len(char)
    if N == 3:
        return [char*3, char + ' '*len_c + char, char*3]		#最小格式时直接输出
    else:
        mylist = carpet(N/3, char)		#将图形存为一个列表
        for j in range(2):		#增加竖向宽度
            for i in range(int(N/3)):
                mylist.append(mylist[i])		
        for i in range(len(mylist)):		#增加横向宽度
            if i >= N/3 and i < N/3*2:
                mylist[i] = mylist[i] + ' '*len_c * int(N/3) + mylist[i]	#中间留白
            else:
                mylist[i] = mylist[i]*3
        return mylist

n = int(input())
c = input()
# n = 27
# c = '[]'
if n == 0:	# n=0直接输出
    print('')
else:
    ans = carpet(n, c)
    for i in ans:	#打印图形
        print(i)

总结

增加长宽时,要注意carpet(N, char)中char字符的宽度


学习陈斌老师的数据结构与算法Python版课有感

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158629.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Material Design 实战 之第五弹 —— 下拉刷新(SwipeRefreshLayout) …

    Material Design 实战 之第五弹 —— 下拉刷新(SwipeRefreshLayout) …

    2021年6月14日
    84
  • 手撸 webpack4.x 配置(二)[通俗易懂]

    手撸 webpack4.x 配置(二)[通俗易懂]接着上一篇手撸webpack4.x配置(一)继续学习webpack配置。今天我学习配置下webpack中另一个模块plugins配置。之前我们都是手动在打包后(dist)目录里手动新建的index.html然后把打包后生成的JS文件手动的引入,今天我们来安装一个插件让webpack自动给我们生成模板!1官网配置地址:html-webpack-p…

    2022年8月22日
    5
  • 字符串常量池_字符串常量池溢出

    字符串常量池_字符串常量池溢出我们知道字符串的分配和其他对象分配一样,是需要消耗高昂的时间和空间的,而且字符串我们使用的非常多。JVM为了提高性能和减少内存的开销,在实例化字符串的时候进行了一些优化:使用字符串常量池。每当我们创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就直接返回常量池中的实例引用。如果字符串不存在常量池中,就会实例化该字符串并且将其放到常量池中。由于String字符串…

    2022年7月28日
    11
  • 卡尔曼滤波算法详细推导[通俗易懂]

    卡尔曼滤波算法详细推导[通俗易懂]一、预备知识1、协方差矩阵是一个维列向量,是的期望,协方差矩阵为可以看出协方差矩阵都是对称矩阵且是半正定的协方差矩阵的迹是的均方误差2、用到的两个矩阵微分公式公式一:公式二:若是对称矩阵,则下式成立…

    2022年6月14日
    32
  • 安卓手机怎么用java模拟器

    安卓手机怎么用java模拟器前言不知道你们发现没有,在很多互联网公司基本上都是80后,90后居多,很少还有超过40岁的程序员。可能很多人心里都有一个疑问,那就是这些40多岁的程序员都干嘛去了呢?创业显然只是极少数的人,至于管理岗,一个公司也不过几个人而已,更多的人显然已经不再从事这个行业了,难道真的只能提前退休了吗?目录由于文档内容过多,共计有500页,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的可以在文末获取!部分内容展示深入浅出索引(上)索引的常见模型InnoDB的索引模型

    2022年7月7日
    23
  • mysql explain不准确_mysql explain预估剖析「建议收藏」

    mysql explain不准确_mysql explain预估剖析「建议收藏」引子:使用MySQL建立了一张表country,总共有才3121行记录。但是使用explainselectcount(*)fromcountry;的时候,发现行数rows达到6897,让我大吃一惊。mysql>explainselectcount(*)fromcountry;+—-+————-+———+——+————–…

    2022年10月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号