魔术师的猜牌术(一维数组) C++程序
魔术师的猜牌术(一维数组)
魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下
。对观众说:我不看牌,
只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。
魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,
然后按顺序从上到下数手中的余牌,第二次数1,2,将第一张牌放在这迭牌的下面,
将第二张牌翻过来,正好是黑桃2,也将它放在桌子上。第三次数1,2,3,将前面两张依次放在这迭牌的下面,
再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的?
问题分析与算法设计
题目已经将魔术师出牌的过程描述清楚,我们可以利用倒推的方法,很容易地推出原来牌的排列顺序。
人工倒推的方法是:在桌子上放13个空盒子排成一圈,
从1开始顺序编号,将黑桃A放入1号盒子中,
从下一个空盒子开始对空的盒子计数,当数到第二个空盒子时,
将黑桃2放入空盒子中,然后再从下一个空盒子开始对空盒子计数,
顺序放入3,4,5…,直到放入全部13张牌。注意在计数时要跳过非空的盒子,
只对空盒子计数。最后牌在盒子中的顺序,就是魔术师手中原来牌的顺序。
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{int i,j,a[13],n;cout<<"这副牌的排列方式为:";j=0; //13个空盒的下标。for(i=0;i<13;i++)a[i]=14; //14代表盒子为空。for(i=0;i<13;i++){n=0; //第一个空盒子计为0号盒子。while(n<=i){if(j>12)j=0; //盒子的编号,当大于12时,j重置为第一个盒子的编号0。if(a[j]!=14) //判断盒子是否为空,若不为空,跳过。j++;else{if(n==i) //当从第一个空盒开始数,数到的空盒数等于牌的编号时,将牌放入。a[j]=i;n++; //若不相同,向后数一个盒子j++; //盒子下标同时+1}}}for(i=0;i<13;i++){a[i]+=1; //应为之前给牌赋的值为0-12,所以依次+1后输出cout<<setw(3)<<a[i]; }cout<<endl;
}
魔术师的猜牌术(一维数组) C++程序相关推荐
- 【刷题记录】【一维数组】魔术师的猜牌术。
魔术师的猜牌术.魔术师利用一副牌中的十三张黑桃,预先将它们排好后迭在一起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们看看.魔术师将最上面的那张牌数为1, ...
- 魔术师利用一副牌中的13张红桃c语言,魔术师的猜牌术(1) 魔术师利用一副牌中的13张黑桃 - 下载 - 搜珍网...
魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一 起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌 是什么,我大声数数,你们听,不信?你们就看.魔术师将最上 面的那张牌数为1,把它翻过来 ...
- 数的变幻(魔术师的猜牌术(2))
/**************************************** * File Name : figure.c * Creat Data : 2015.1.29 * Author : ...
- c语言实例 魔术师的猜牌术(1),C语言实例:魔术师的猜牌术(1)
魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看.魔术师将最上面的那张牌数为1,把它翻过来正好是 ...
- 魔术师的猜牌术(1)
魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下.对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看.魔术师将最上面的那张牌数为1,把它翻过来正好是 ...
- c语言实例 魔术师的猜牌术(1),C语言实例:魔术师的猜牌术(2)
魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上.以后,从上至下每数两张全依次放在最底下,第三张给观众看,便是黑桃2,放在桌上后再数两张依次放 ...
- c语言实例 魔术师的猜牌术(1),C语言实例 魔术师的猜牌术(1)
满意答案 u6jjltfs0v 2014.05.15 采纳率:43% 等级:12 已帮助:4849人 这个问题你想让别人一步一步帮你递推演示,要累死人的.不仅解释的人累,大段大段的无聊文字你看着 ...
- 算法_数学问题_Question8_猜牌术(java实现)
这篇文章讲述的是算法初级部分的猜牌术问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题描述 魔 ...
- 100个python算法超详细讲解:猜牌术
1.问题描述 魔术师利用一副牌中的13张黑桃,预先将它们排好后叠在一起,并使牌面 朝下.然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大 声数数,你们听,不信你们就看.魔术师将从最上面的 ...
最新文章
- undefined reference to `libiconv_open 无法编译PHP libiconv
- 【动态规划】装箱问题
- 备忘录模式(Memento)
- Vulnhub靶机渗透之 AI: Web: 1
- 安装 | Anaconda3下载链接
- 在服务子程中首先关闭ie 的HTML5连接向导
- 修改cas5成功html文件,手把手教Apereo CAS5.2.3 Server端 增量开发 自定义登录页,增加验证码,注册,修改密码等功能的方式...
- 最舒服的颜色搭配值,很有用哦,特别是做设计的!!
- ACM题目————STL练习之众数问题
- Android EventBus现实 听说你out该
- VM14安装CentOS7并配置网络
- 惠普z800工作站bios设置_HP工作站BIOS说明书适用Z228Z440Z230Z640Z840Z800Z620Z420Z820主板设置.doc...
- 古代到现在一些小国家的形成和解体
- 破解webstrom2017
- 多传感器融合方式分析
- 小度、天猫精灵、华为哪款智能音箱值得推荐?
- 小新吃上黑苹果13.1
- 前端基础学习html部分小结
- java面试(JVM)
- 关于Android如何集成QQ登录及分享