问题描述:
- 魔术师手中有A、2、3……J、Q、K十三张黑桃扑克牌。在表演魔术前,魔术师已经将他们按照一定的顺序叠放好(有花色的一面朝下)。魔术表演过程为:一开始,魔术师数1,然后把最上面的那张牌翻过来,是黑桃A;然后将其放到桌面上;第二次,魔术师数1、2;将第一张牌放到这些牌的最下面,将第二张牌翻转过来,正好是黑桃2;第三次,魔术师数1、2、3;将第1、2张牌依次放到这些牌的最下面,将第三张牌翻过来正好是黑桃3;……直到将所有的牌都翻出来为止。问原来牌的顺序是如何的。
- 答案:1 8 2 5 10 3 12 11 9 4 7 6 13
解题思路:
按取牌规则,循环遍历一个数组,得到每一次翻出的牌在数组中的下标(即位置:)
而下标是死的,下标上的牌是活的,所以只需要按部就班的将我们想要翻的牌放在这个位置上即可.
参考代码:
#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<cstdlib>
#define TOTAL 13
void MagicCard(char **