可视化讲解:什么是魔术师发牌问题?

1,044 阅读5分钟

前言

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

概念介绍

1. 基本简介

  • 一位魔术师掏出一叠扑克牌,魔术师取出其中13张黑桃,洗好后,把牌面朝下。
  • 魔术师说:“我不看牌,只数一数就能知道每张牌是什么?”
  • 魔术师口中数1,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌。
  • 魔术师第二次数1,2,将第1张牌放到这叠牌的下面,将第2张牌翻开,正好是黑桃2,也把它放在桌子上。
  • 魔术师第三次数1,2,3,前面2张牌放到这叠牌的下面,取出第3张牌,正好是黑桃3,这样依次将13张牌翻出,全部都准确无误。
  • 求解:魔术师手中牌的原始顺序是什么样子的?

原理讲解

  • 我们以黑桃1、黑桃2、黑桃3、黑桃4、黑桃5、黑桃6、黑桃7、黑桃8、黑桃9、黑桃10、黑桃11、黑桃12、黑桃13为例说明魔术师手中牌的原始顺序。
  • 在魔术师未发牌之前(我们以五角星代表此时该位置的牌未翻出)效果如下图 在这里插入图片描述
  1. 魔术师口中数1,将第一张牌翻过来看正好是黑桃A,魔术师将黑桃A放到桌上。我们可知,位置1原始放的就是黑桃A。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,将第1张牌放到这叠牌的下面,将第2张牌翻开,正好是黑桃2,魔术师将黑桃2放到桌上。我们可知,位置3原始放的就是黑桃2。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,将前2张牌放到这叠牌的下面,将第3张牌翻开,正好是黑桃3,魔术师将黑桃3放到桌上。我们可知,位置6原始放的就是黑桃3。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,将前3张牌放到这叠牌的下面,将第4张牌翻开,正好是黑桃4,魔术师将黑桃4放到桌上。我们可知,位置10原始放的就是黑桃4。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,将前4张牌放到这叠牌的下面,将第5张牌翻开,正好是黑桃5,魔术师将黑桃5放到桌上。我们可知,位置4原始放的就是黑桃5。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,将前5张牌放到这叠牌的下面,将第6张牌翻开,正好是黑桃6,魔术师将黑桃6放到桌上。我们可知,位置12原始放的就是黑桃6。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,将前6张牌放到这叠牌的下面,将第7张牌翻开,正好是黑桃7,魔术师将黑桃7放到桌上。我们可知,位置11原始放的就是黑桃7。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,将前7张牌放到这叠牌的下面,将第8张牌翻开,正好是黑桃8,魔术师将黑桃8放到桌上。我们可知,位置2原始放的就是黑桃8。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,9,将前8张牌放到这叠牌的下面,将第9张牌翻开,正好是黑桃9,魔术师将黑桃9放到桌上。我们可知,位置8原始放的就是黑桃9。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,9,10,将前9张牌放到这叠牌的下面,将第10张牌翻开,正好是黑桃10,魔术师将黑桃10放到桌上。我们可知,位置5原始放的就是黑桃10。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,9,10,11,将前10张牌放到这叠牌的下面,将第11张牌翻开,正好是黑桃J,魔术师将黑桃J放到桌上。我们可知,位置8原始放的就是黑桃J。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,9,10,11,12,将前11张牌放到这叠牌的下面,将第12张牌翻开,正好是黑桃Q,魔术师将黑桃Q放到桌上。我们可知,位置7原始放的就是黑桃Q。此时效果如下图

在这里插入图片描述

  1. 魔术师口中数1,2,3,4,5,6,7,8,9,10,11,12,13,将前12张牌放到这叠牌的下面,将第13张牌翻开,正好是黑桃K,魔术师将黑桃K放到桌上。我们可知,位置13原始放的就是黑桃K。此时效果如下图

在这里插入图片描述


效果展示

在这里插入图片描述

更多算法学习请关注我的公众号

说明

  • 在公众号中回复“算法源码”即可获取十大经典算法源码
  • 在公众号中回复“算法书籍”即可获取经典入门算法书籍
  • 在公众号中回复“数据结构”即可获取数据结构相关源码