测出你的姓氏--算命先生的“算法”分析
在农村或者小城镇生活的人可能都见过这样一种算命的,他首先会给你8张卡片,上面写满了姓氏,让你从里面找出有你自己姓氏的卡片,当你把所有自己姓氏的卡片给他的时候,他竟然会一口说出你的姓氏。然后你就会相信他后面所说的所有话,当然,拿钱也是毫不犹豫的事情了。
不过,只要是读过书的人都知道,这肯定是骗人的,都明白这个道理很简单,不就是在几张卡片中找出相同的姓氏,而且这些卡片中有且仅有一个姓氏是同时存在的。但是,大家有没有想过,一个卡片上有三四十个姓氏,你给他拿去的可能加起来就是100好几个姓氏,他是怎样一眼就看出来的呢?当然,这个也不是难题,不就是给每个卡片、每个姓氏加一个唯一的标示嘛,但仔细一样,要怎样加这个标示呢?又怎么样来快速的辨认这些标示呢?
学过计算机的人可能一下子就明白了,“二进制”,或许能帮我们解决这个问题。大家都知道一个4位的二进制可以表示16以内任意一个十进制数,那么5位,6位...11111111这个8位的二进制数相当于10进制的255,也就是说一个8位的二进制数可以表示255以内的任意一个十进制数值。那么,我们就不难想到,取出他们的权值“1,2,4,8,16,32,64”,那么255以内的任意一个10进制数值都可以通过这8个数值中的任意个数想加得到。比如说:我们分别为8张卡片(假设为:A1,A2,A3,A4,A5,A6,A7,A8)分配上述8个数值。然后为所有姓氏分配一个唯一的大于0的数值。比如有:赵(1),钱(5),孙(14),李(43),王(90),卢(104)那么我们可以得到如下集合
A1=“赵,钱,李”;
A2=“孙,李,王”;
A3=“钱,孙”;
A4=“孙,李,王,卢”;
A5=“王”;
A6=“李,卢”;
A7=“王,卢”;
如果你是个要算命的,你给我拿来A1,A3卡片,我可以很快的算出:1+4=5,既“钱”;拿来A4,A6,A7,那就是“8+32+64=104” 既“卢”。异词类推,想必大家都已经豁然开朗。如果想通过计算机实现此功能也就相当简单了,只是对每个姓氏对应的数值转换成2进制,然后根据它的权值就可以确定这个字应该放在那些卡片里,然后把选出的卡片的值想加,再查询响应的姓氏就搞定了。
由此我们可以清楚的认识到,不管是算命还是魔术或者其他,“骗人”只是众人的一种叫法,其实,它只是科学知识的另一种用途而已,所以,不管遇到什么让我们难以想象的事情,如果仔细想想,或许能通过自己所学来揭开它的迷团
测出你的姓氏--算命先生的“算法”分析相关推荐
- 社交网络算法-分析指标
社交网络算法-分析指标 一个具体的网络可抽象为一个由节点(vertex或node) 集合V和边(edge)集合E组成的图G = (V, E),节点数 记为n = |V|,边数记为m = |E|. 衡量 ...
- Cibersort 算法 分析肿瘤样本免疫细胞组分
2015年斯坦福大学医学院的一个研究团队,提出了一种分析单细胞类型的新方法.这种方法类似于分析一杯奶昔,以找到什么水果加入其中.本研究描述的方法称为Cibersort,在线发表于三月三十日的<自 ...
- 农村单一姓氏村庄的成因分析
一.概述 中国农村汉族存在大量单一姓氏村民的村庄,而且呈南北,东西区域分布差异明显.汉族的姓氏来源与中国王朝制度的分封制,地域的分封命后来就成了很多该地域子民的姓氏.特别是西周时期形成的疆域分封制,西 ...
- 海潮音排序算法:分析与针对性提升
template <class 形参> void 海潮音(形参 数组[], int 量) {int 标 = 0, 头 = 0, 尾 = 量;形参 转存 = 0;do{标 = 头;while ...
- 算法 分析 (收集)
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...
- 虚拟dom与diff算法 分析
好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM 转载于:https://www.cnblogs.com/zqzjs/p/5798107.html
- Apriori算法(经典的发现频繁项目集算法)分析
基本概念 I是一个项目集合,事务数据库D是由一系列具有唯一标识TID的事务组成,每个事务t都对应I上的一个子集 支持度:项目集I1在数据集D上的支持度是包含I1的事务在D中所占的百分比 频繁项目集:对 ...
- 程振波 算法设计与分析_算法设计与分析
本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...
- 层次分析法-基于节点关键度的DTN路由算法
当你看到一个知识点的时候,不是收藏和点赞,而是想办法转化成自己需要的知识,好记性不如烂笔头. 层次分析法 层次分析法(运筹学理论),简称AHP,是指将于决策总是有关的元素分解成目标.准则.方案等层次, ...
最新文章
- PHP流程控制语句例题,第四堂、php流程控制语句
- 服务器传感器不显示,服务器传感器不显示
- mastered skills
- C++继承时的对象内存位置(一)
- zcmu 4935(排序)
- js 动态创建注释节点 createComment
- php数组里面写路径,使用路径在PHP数组中进行递归搜索
- 抓住好资产,让你赚一辈子
- 电子健康行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- (三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介
- git submodule详解
- AMESim软件包 百度云下载
- .net core 3.1JWT用户权限认证(二)获取token
- 局域网匿名访问共享文件的设置方法?
- Linux gpg命令
- 如何建立简易Rss源
- Kaggle: Tweet Sentiment Extraction 方法总结 Part 2/2: 金牌思路总结
- 让Eclipse可以自动排版
- [日常] SinaMail项目和技术能力总结
- 爱心 python 词云_爱心 python 词云_python 词云
热门文章
- dysms_PHP(发短信)
- 速卖通测评自养号怎么做?测评方法有哪些?
- 体外(无细胞)蛋白表达试剂盒-原核蛋白表达系统(基于大肠杆菌内源的转录和翻译机制)
- Word2007居然无法去掉doc文档结构图文字突出显示的底纹填充背景色
- PWN! 第一次测试答案及讲解
- 【Tiptop ERP】鼎新Tiptop ERP5.x 所有开发与管理维护 文章索引
- 深入剖析!快手三面面试真题
- 易语言高级表格写入MYSQL_易语言数据库与高级表格思路分析.doc
- 基于ESP8266的物联网智能插排
- VUE使用Three.js实现模型,点击交互,相机旋转视角跟随移动(Threejs中使用Tweenjs,含demo源码)