当前位置:   article > 正文

搭积木——pythonOJ笔记_有编号为 0 ( 1 ) 0 (n 1)的若干个积木块按编号从小到大的

有编号为 0 ( 1 ) 0 (n 1)的若干个积木块按编号从小到大的

搭积木——pythonOJ笔记

题面描述:
有编号为0-(N-1)的若干个积木块按编号从小到大的顺序排成一行,每个积木块所在的位置为其对应的编号。一个机器人可以操纵这些积木块,机器人可以执行如下指令:

  • mv a on b
    将a和b所在列a、b之上的所有积木块恢复到最初其所在的位置上,然后将积木块a搁置在积木块b之上。
  • mv a ov b
    将积木块a之上的所有积木块恢复到最初其所在的位置上,然后将积木块a放置在积木块b所在列的顶端。
  • st a on b
    将积木块b之上的所有积木块恢复到最初其所在的位置上,然后将积木块a及其上的所有积木放置在积木块b之上。
  • st a ov b
    将积木块a及其上的所有积木放置在积木块b所在列的顶端。
  • xh a an b
    交换a和b所在的列。
  • q
    退出
    上述命令中,若存在a==b或a、b在同一列上,则为非法指令。机器人会忽略所有的非法指令,不会操作任何的积木块。
    输入:
    输入的第一行为一个整数n(0 < n < 25 ),随后有若干行指令,保证所有的指令为上述形式。若指令为q,表示指令结束。
    输出:
    请输出机器人执行所有的指令后的积木状态。记机器人操作之前每个积木所在的列为i (0 <= i < n),请按样例形式输出每列的所有积木。对任何一列,在一行中输出该列中所有的积木信息。输出格式为:先输出列号和,若该列无积木,则直接换行,否则在单个空格后输出各个积木块的编号,编号之间以单个空格分隔。
    示例输入:
    10
    mv 9 on 1
    mv 8 ov 1
    mv 7 ov 1
    mv 6 ov 1
    st 8 ov 6
    st 8 ov 5
    mv 2 ov 1
    mv 4 ov 9
    xh 4 an 9
    q
    示例输出:
    0: 0
    1: 1 9 2 4
    2:
    3: 3
    4:
    5: 5 8 7 6
    6:
    7:
    8:
    9:

思路:
主要考虑将各个功能模块化实现,将任务拆开分析。通过调试好一个个小模块后,合并任务得到最后解。


def find(a,matrix):#找到a的坐标(二维数组)
    for i in range(n):
        for j in range(n):
            if matrix[i][j] == a:
                return [i,j]
def recover(a,matrix):#将a之上的所有木块恢复最初位置
    dot = find(a,matrix)
    for i in range(dot[1]+1,n):
        if matrix[dot[
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/736064
推荐阅读
相关标签
  

闽ICP备14008679号