编程揭秘刘谦春晚魔术(约瑟夫环问题Josephus)

文章详细解析春晚魔术中刘谦表演的扑克牌技巧,揭示其背后的数学原理——约瑟夫环问题,通过C语言代码模拟演示了牌序变化的过程。
摘要由CSDN通过智能技术生成

哈喽~各位过年好哇!

相信大家应该都看了春晚刘谦表演的魔术吧,大家当时有没有跟着做成功呢,其实背后的原理很简单,现在我们来逐句分析,一起探索其中的原理吧!

首先,有四张牌假设为1,2,3,4。然后撕一半,假设撕完之后的牌后为:1,2,3,4,1`,2`,3`,4`。然后有数字的牌面向下,放在一起之后,编号依次令为:4`,3`,2`,1`,4,3,2,1。

这样准备工作就做好了。接着就进入正题。

Step①:根据名字的字数依次从最上面的牌放到最下方

其实,这一步与几个字完全没任何关系,假如你是两个字,在完成这一步之后,牌序列变为:2`,1`,4,3,2,1,4`,3`;假如你是三个字,在完成这一步之后,牌序列变为:1`,4,3,2,1,4`,3`,2`如果你的名字是七个字,在完成这一步之后,牌序列变为:1,4`,3`,2`,1`,4,3,2

好了,接下来关键的一步,拿起最上面的3张牌,放进剩余牌的中间任意位置。

我先解释一下,首先3张牌的目的是为了保证拿起这3张牌之后的最上面一张牌的编号与最底下的一张牌的编号一定是对应的。假如你的名字是2个字:2`,1`,4,3,2,1,4`,3`,拿起3张牌之后剩下的牌变为3,2,1,4`,3`,可以发现3与3`是对应的。假如你的名字是3个字:1`,4,3,2,1,4`,3`,2`,2与2`也是对应的关系。同理其他序列也是满足的。
其次,这3张牌插进剩下牌的中间任意位置是为了保证不影响首尾这两张牌的对应关系,因此这里只需要将这3张牌插进中间的任意位置即可,并不会影响首尾的两张牌。

好了,在按照上述要求完成第一步之后,假设牌序列为:2,1,1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>