Description

魔术师手中有m张牌,牌的编号为1-n,魔术师预先将牌排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听。不信?你们就看。

魔术师按顺序从上到下数手中的牌,第一次数1,将第一张牌(最上面的那张牌)翻过来放到桌面,正好是牌1。第二次数1、2,将第一张牌放到这迭牌的下面,将第二张牌翻过来放到桌面,正好是牌2。第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌放到桌面,正好是牌3。这样依次进行,将n张牌全翻过来,准确无误。问魔术师手中的牌原始次序是怎样安排的?

Input

输入第一行为一个整数T(1<=T<=10),表示有T组测试数据;

对于每组测试数据格式如下:
第一行为1个整数n(1<=n<=26)。

Output

为每个测试样例单独一行输出魔术师手中牌的原始次序,每个牌号之后跟一个空格。

Sample Input
5
1
2
3
4
13

Sample Output
1
1 2
1 3 2
1 4 2 3
1 8 2 5 10 3 12 11 9 4 7 6 13 

解题思路:数组num用来储存牌,index表示当前下标。1.初始化,牌位里面都为空,0;2.第一个位置放1,依次往后数第n个空位(也就是说非空的不算在内)放牌n,到达数组尾部   就跳回下标为0继续循环

实现代码:
#include<iostream>
using std::cin;
using std::cout;
using std::endl;int main() {int num[26];int T, n, total, index;cin >> T;  //T个测例 for (; T > 0; T--) {cin >> n;for (int i = 0; i < 26; i++) num[i] = 0;           //初始化置空 num[0] = 1;                //第一个肯定放1 index = 1;for (int i = 2; i <= n; i++) {for (total = 0; total < i; ) {  //total用来表示当前第几个空牌位 if (num[index] == 0) total++;if (total == i) break;if (index == n - 1)      //到达数组尾部跳回头部 index = 1;else index++;}num[index] = i;           //放牌 }for (int i = 0; i < n; i++) {cout << num[i] << ' ';}cout << endl;}
}

  (本博文或多或少参考过其他网上资料,但时间已久忘记当初的参考了,在此对他们表示感谢!)

 

转载于:https://www.cnblogs.com/zengyh-1900/p/4064172.html

【猜牌算法】魔术师的游戏相关推荐

  1. 魔术师的猜牌术(一维数组) C++程序

     魔术师的猜牌术(一维数组) 魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下 .对观众说:我不看牌, 只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看. 魔术师 ...

  2. 算法_数学问题_Question8_猜牌术(java实现)

    这篇文章讲述的是算法初级部分的猜牌术问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题描述 魔 ...

  3. 魔术师利用一副牌中的13张红桃c语言,魔术师的猜牌术(1) 魔术师利用一副牌中的13张黑桃 - 下载 - 搜珍网...

    魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一 起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌 是什么,我大声数数,你们听,不信?你们就看.魔术师将最上 面的那张牌数为1,把它翻过来 ...

  4. 扑克游戏的洗牌算法及简单测试

    2019独角兽企业重金招聘Python工程师标准>>> 我在学习<写给大家看的C语言书>这本书时,对书后面附录的一个扑克游戏程序非常感兴趣.源代码在帖子最后. PS:这本 ...

  5. 【刷题记录】【一维数组】魔术师的猜牌术。

    魔术师的猜牌术.魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看.魔术师将最上面的那张牌数为1, ...

  6. 数的变幻(魔术师的猜牌术(2))

    /**************************************** * File Name : figure.c * Creat Data : 2015.1.29 * Author : ...

  7. c语言猜牌游戏,C++实现猜牌小游戏

    这是大一的时用C写的猜牌小游戏,里面用了easyx图形库,供大家参考,具体内容如下 运行效果 代码 #include #include #include #include #include #incl ...

  8. 游戏中常见的洗牌算法

    今天把游戏中用到的洗牌算法好好看了看,把自己感觉最易懂的和最经典的一种分享出来,当然,我这个是看过别人之后自己写的. 我们以扑克牌当做例子,一共有54张,如何一次就把排序全部打乱呢? 1.最笨的洗牌算 ...

  9. 微信小游戏开发-麻将洗牌算法(二)

    麻将一组有1-9筒,1-9条,1-9万,中发白,东南西北,34张牌,共有四组,共136张牌. 可以通过一个数组来表示则一组牌,代码如下: private final static String[] m ...

最新文章

  1. html5怎么设置勾选,word文档怎么设置输入勾选框
  2. 关于如何在Nomad中保护工作部署的工作流的简要历史
  3. 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (
  4. linux tbb 安装_Ubuntu18.04 GCC9 安装
  5. String常见问题
  6. 蓝桥杯 ALGO-88 算法训练 字串统计
  7. 《软件工程与实践》第三版 软工导论知识梳理总结
  8. golang c10k问题
  9. Outlook 365 添加企业Exchange邮箱(亲测)
  10. CocosCreator快速接入bugly
  11. 大三计算机组成原理深度学习——机器字长、存储单元、存储字长、存储容量,存储体的概念
  12. iOS关于图片点到像素转换之杂谈
  13. matlab 强度梯度,梯度算法的Matlab实现
  14. 最安全的微信群管理工具推荐
  15. 【C++】严重性代码说明项目文件行错误
  16. 信号完整性之眼图(eye)理解(一)
  17. java 等待线程池结束_等待线程池中任务执行完毕做优雅关闭
  18. VTK 学习----VTK对象绘制-点(vtkPoints、vtkSphereSource)、线(vtkLine、vtkLineSource)
  19. ASEMI整流桥大全,整流桥知识型号大全
  20. RK3288 添加backlight lcd接口

热门文章

  1. 2020年是意义非凡的一年,大专的我面试阿里P6居然过了
  2. in 在将 nvarchar 值转换成数据类型 int 时失败
  3. 推荐BIG DATA Spark 的7本学习电子书籍(大牛专区)
  4. 香帅的北大金融学课 02 金融机构——银行
  5. 基于图像的三维重建——特征点检测与匹配(2)
  6. 用AHP层次分析法挑选最佳结婚对象
  7. ux设计工具_UX设计中的工具和实用主义
  8. Java 基础巩固:再谈抽象类和接口
  9. 微信定向流量_微信沃卡发布 10元包300MB微信定向流量
  10. 计算机设计基础课程设计,设计课程总结范文