Python数据结构考试题,数据结构与算法python版 期末考试
注意:本文涉及的所有代码都经过Python 3.7测试,以确保其严谨性。
这篇文章的阅读时间大约是7分钟。
递归编程练习3: ASCII Shelbinski地毯
谢尔宾斯基地毯
谢尔宾斯基地毯是类似上图的方形分形图案。每块地毯可以分成9块大小相等的,中间挖空,其余由更小的地毯组成。
给定地毯尺寸(行数)和组成地毯的字符元素,请打印相应的地毯图形。
注意:空腔用半宽空格表示;当给定字符元素的长度不为1时,空格数必须对应于字符长度。
输入格式:
输入两条线,即地毯的边长,即组成地毯的元素个数为——正整数n,组成地毯的元素为3354串c。
输入数据保证n是3的正整数幂。
输出格式:
Kjellbing地毯由N行长度为N*len(c)的字符串组成。
输入样本:
九
[]
输出样本:
[][][][][][][][][]
[] [][] [][] []
[][][][][][][][][]
[][][] [][][]
[] [] [] []
[][][] [][][]
[][][][][][][][][]
[] [][] [][] []
[][][][][][][][][]
参考计划模板:
def地毯(N,char):
#此处代码
及格
n=int(input())
c=输入()
地毯(北美)
答:这里我们主要用递归来解题。关键在于在哪里填充空格字符(即挖空)和在哪里填充字符串C为一个最小条件。
我们可以通过设置坐标系和坐标(x,y)来精确控制空格字符或字符串C的填充位置。
以下面最简单的3 * 3 Kjellbing地毯为例,坐标(x,y)可以精确表示途中的任何地方。例如,当x=0,y=0时,坐标(0,0)表示左上角的第一个[],而坐标(1,1)表示切尔宾斯基地毯的镂空部分,即填充有空格符号的位置。
[][][]
[] []
[][][]
那么,如何在程序中实现(x,y)坐标的模拟呢?双for循环是我们正在寻找的工具:
对于范围(N)中的x:
对于范围(N)中的y:
最后,不要忘记换行符 \n 的用法。
参考代码和详细注释如下:
def地毯(N,c):
#以X,Y为坐标点,判断哪个坐标位置填充字符串C,哪个位置填充空格字符(即镂空)。
def judge(n,x,y):
如果n==1:
True #用满足True条件的(x,y)坐标点填充字符串C。
n1=n //3
如果n1=x n1 * 2且n1=y n1 * 2:
False #满足False条件的(x,y)坐标点用空格字符填充。
Return judge(n1,x% n1,y% n1) #递归继续判断,直到满足基本结束条件。
D= #创建一个变量d,用于显示Kjellbing地毯成品。字符串形式。
对于范围(N)中的x:
对于范围(N)中的y:
if judge(N,x,y):
d=c
否则:
d=(len(c) * )
D=d \n #这里有一个换行符。
返回d
N=int(input())
c=输入()
印花(地毯(N,c))
九
()
()()()()()()()()()
() ()() ()() ()
()()()()()()()()()
()()() ()()()
() () () ()
()()() ()()()
()()()()()()()()()
() ()() ()() ()
()()()()()()()()()
未完待续。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。