2 条题解

  • 0
    @ 2024-4-25 19:04:48

    这道题目是一个典型的逻辑和模拟问题,它要求我们通过一系列的操作来恢复原始的扑克牌顺序。我们可以通过模拟这个过程来找到原始的排列。

    既然题目描述中提到了“把最上面的两张一张一张的一次移到最后”,我们可以想到使用队列(queue)来模拟这个过程。队列是一种先进先出(FIFO)的数据结构,它非常适合用来模拟这种顺序移动的操作。

    我们可以使用一个队列来模拟扑克牌的顺序,同时用一个数组来记录最终排列好的顺序。然后,我们按照题目的描述进行模拟:

    1. 初始化一个队列,把1到n的扑克牌按顺序放入队列中。
    2. 初始化一个数组,用于记录最终排列好的顺序。
    3. 开始模拟过程:
      • 从队列中取出第一张牌(即队列的队首元素),并放入最终排列的数组中。
      • 根据当前取出的牌的值,决定接下来要移动多少张牌到队列的尾部。例如,如果取出的牌是3,那么就把队列的前3张牌移动到队列的尾部。
      • 重复这个过程,直到队列为空。
    • 0
      @ 2024-4-25 18:50:14

      初始序列为1 8 6 2 9 4 5 3 7

      第一次拿掉第一张牌以后8 6 2 9 4 5 3 7

      然后移掉两张牌到最后以后2 9 4 5 3 7 8 6

      第二次拿掉第一张牌以后9 4 5 3 7 8 6

      然后移掉三张牌到最后以后3 7 8 6 9 4 5

      第三次拿掉第一张牌以后7 8 6 9 4 5

      然后移掉四张牌到最后以后4 5 7 8 6 9

      第四次拿掉第一张牌以后5 7 8 6 9

      ……

      这样依次拿牌,就会出现1到n的序列。

      • 1

      信息

      ID
      1954
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      递交数
      9
      已通过
      3
      上传者