端午放假在家,平时上班真的很忙很忙,没有时间休息!而码农放松的最好的办法躺着看电视剧煲电影,有的人是喜欢看电影,有的人是打游戏,当然还有的码农酷爱看动漫。

小编其实三者都喜欢,而且还是一个武侠金庸迷,放假在家翻了翻金庸的电视剧 “飞雪连天射白鹿,笑书神侠倚碧鸳”,每一部都非常经典。最帅的还是古天乐版本的杨过,最羡慕的人物还是鹿鼎记里面的韦小宝。

01.小宝的7个老婆

韦小宝有7个老婆,每一个老婆都是如花似玉,才艺非凡,都有自己的技能和亮点,我大概列了一个表格:

如果现在给韦小宝出一道题目,如果只能选择最少个数的老婆来满足所有的技能,应该怎么选。就是占据了颜值高,脾气好,有智慧,武功高,有社会地位,而且还温柔善良。

是不是很麻烦该怎么选择呢?今天我们用Python大法来帮小宝一把,看我Python大法如何解决~

02.数据结构设计

我们需要把上面的表格里面的数据转为计算机的数据结构,我们用列表来存储数据。分别列了技能,老婆的名字和每个老婆拥有的技能,大致如下:

  • Talents为技能树

  • wives为老婆的名字

  • WifeTalents为每个老婆的技能列表

这里用了一个嵌套列表,注意这个嵌套列表的顺序和上面的老婆的名字一一对应。

看起来里面最弱的应该是建宁公主,她仅仅占据了社会地位这一点,其他的武功,性格,智慧好像都不行。而双儿应该是夺冠的热门对象,温柔又体贴,还会做饭,武功也高。那么到底用程序算出来的结果是怎么样呢,我们拭目以待~

03.算法来也

1).首先,设定搜索的空间

小宝有7个老婆,我们可以选择或者不选择其中的每一位佳人。每位佳人对应的就是两种选择,因为搜索的空间为2**n ,7个老婆的搜索空间就是2的7次方,比如:

假设7个人为A,B,C,D,E,F,G

[]

[A][B][C][D][E][F][G]

[AB][AC][AD][AE]...

[ABC][ABD][ABE]...

[ABCD][ABCE]...

...

限于篇幅,我就不完全展开了所有的组合情况。

2).接着,设计一个函数来检查技能

我们上面有这么多组合,我们接着我们设计一个函数来专门检查,是否缺少一门技,如果缺少一门技能绝活,说明这个不是正确的组合,需要抛弃。

如果我们检查了所有的技能绝活且在所有的迭代中都没有返回False,意味着该组合覆盖了所有的绝活,则返回True.

03.主函数设计

  • 这里是7个老婆,wifeList为7,我们用 result来暂时存储,起始的值为完整的7个老婆;

  • 然后我们设计一个搜索空间2的n次方,num=i为对应的组合;

  • 接着用前面设计的excellent函数来检查这个组合是否覆盖了所有的技能绝活;如果满足了,则与当前已知最优的老婆组合进行比较,如果人数少,则更新最优组合;

最后运行一下代码,看看计算机算出来的,最佳老婆组合是什么:

答案竟然是苏荃,建宁公主,曾柔 ,也就是说选择了这3个老婆就可以占全了所有的技能列表。我们来看一下:

确实从图标上看 苏荃,建宁公主,曾柔 可以占满技能树!但是竟然没有双儿,温柔可人,武功高强的双儿竟然落选了。天哪,小编第一个表示不服气,小伙伴们你们服气吗,赶紧在留言区写下你的评论。

需要本次源码的继续研究的,可以在文末获取。

????长按上方二维码 2 秒

回复「韦小宝」即可获取源码

往期热门干货:

  • 用Python一键生成炫酷九宫格图片,火了朋友圈

  • 50行Python代码,一键获取微博热点

  • 太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!

笑喷了,我用Python帮韦小宝选最佳老婆组合相关推荐

  1. 用Python帮你选注双色球号码

    双色球,简单来说,就是两种颜色的球,红色和蓝色. 规则很简单,红球从1-33中选取不同的6个数.篮球从1-16中选取1个数.注意,红球不能有重复的.所以想学的同学,有必要听一下这位老师的课.领取pyt ...

  2. python双色球选号_用Python帮你选注双色球号码 赠送清华大学出版社Python从小白到大牛电子书籍一本...

    双色球,简单来说,就是两种颜色的球,红色和蓝色. 规则很简单,红球从1-33中选取不同的6个数.篮球从1-16中选取1个数.注意,红球不能有重复的. 那么,带大家用Python来选取一注双色球号码. ...

  3. python查看微信撤回消息_想查看微信好友撤回的消息?Python帮你搞定

    要说微信最让人恶心的发明,消息撤回绝对能上榜. 比如你现在正和女朋友用微信聊着天,或者跟自己喜欢的女孩子聊着天,一个不留神,你没注意到对方发的消息就被她及时撤回了,这时你很好奇,好奇她到底发了什么?于 ...

  4. python压缩教程_无需压缩软件,用python帮你操作压缩包

    写在之前 压缩包是互联网上软件发布的标准格式,同时对于系统管理很有用处.当我们需要将多份文件发送给别人的时候,最好通过压缩包的形式发送,还有在备份某些文件的时候,为了减少磁盘空间的占用,也需要对备份的 ...

  5. python色卡识别_用Python帮小姐姐选口红,人人都是李佳琦

    原标题:用Python帮小姐姐选口红,人人都是李佳琦 对于李佳琦,想必知道他的女生要远远多于男生,李佳琦最早由于直播向广大的网友们推荐口红,逐渐走红网络,被大家称作"口红一哥".不 ...

  6. 【微信辅助】疫情当前,python帮你找出朋友圈的武汉朋友给予关怀

    我是程序员小小叶,为大家带来原创精彩技术内容. 疫情无论是对于个体还是企业都是无法承受之重.希望疫情早日过去,这是作为一个普通人一个的小小心愿. 我们身边的亲朋好友也或多或少受到了疫情的影响,让我们来 ...

  7. python什么工作好找女朋友_程序员,三分钟教你用 Python 帮你找一个女朋友

    原标题:程序员,三分钟教你用 Python 帮你找一个女朋友 什么是单身税? 单身税的历史可以追溯到2015年韩国的新政, 低生育率逼得韩国产生了这一政策. 现在我国也要实行这一政策, 很多单身狗就接 ...

  8. python抢火车票_听说你能用 Python 帮我抢火车票?!

    原标题:听说你能用 Python 帮我抢火车票?! 文 | 车栗子 来源 |量子位公众号 想要十一回家的小伙伴们,大概刚刚经历了一波抢票大战. 顺便把一个Python抢票工具,送到了GitHub趋势榜 ...

  9. 用python循环帮皇帝选妃

    在古代,皇帝后宫佳丽三千,这么多的妃子可都是皇帝从众多秀女中一个个选出来的,今天我们来用python模拟帮皇帝选妃. 程序的循环可以处理大量的重复性工作,这是程序一个很重要的优势,在python中主要 ...

  10. 网吧里的计算机课,S8总决赛网吧在干什么?一个画面让人笑喷,在上电脑课把?...

    原标题:S8总决赛网吧在干什么?一个画面让人笑喷,在上电脑课把? 英雄联盟S8总决赛一直都是最近的一个热门话题,关注比赛的小伙伴们应该都知道,今年的总决赛冠军是IG,IG在最后的比赛中以3比0的成绩战 ...

最新文章

  1. python写一个表白程序带时间_Python 打造最强表白程序
  2. 【早知云世】云计算在商务智能中的应用及竞争力
  3. phpstorm的php函数文档插件
  4. nginx proxy cache配置参数解读
  5. UI5应用如果出现白屏但是没有任何错误消息打印出来,应该如何处理
  6. 1 jquery对checkbox的简单操作
  7. 外卖小程序源码-带流量主-个人用户可接入
  8. 代码块是什么?该如何使用?
  9. PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
  10. Tomcat - Springboot启动的时候初始化的线程池默认配置
  11. srs信道估计_信道估计(channel estimation)图解——从SISO到MIMO原理介绍
  12. 放大器电路的大信号带宽,压摆率是瓶颈
  13. linux bond四网卡绑定,Linux bond 网卡绑定配置教程
  14. 清华大学计算机科学学院刘钊,姚 骏-清华大学生命学院
  15. 哪个软件能代替斐讯路由_斐讯路由器最新版本|好用的路由器管理软件_最火手机站...
  16. Linux 生成so库文件并调用
  17. Redis 50问
  18. 【面试】面试反问环节
  19. Python+OpenCV实用案例应用教程:建立自定义物体检测器
  20. Hadoop 入门总结

热门文章

  1. 【贰】人生穷富的关键
  2. vue前后端分离图片无法显示的问题
  3. 架构设计基础设施保障(laaS 云虚拟使用 存储 网络 DNS运用 CDN剖析和运用)
  4. UnityShader笔记第三课-MVP矩阵原理-M矩阵
  5. Swift:一个简单的货币转换器App在iOS10中的分析和完善
  6. Win10系统如何关闭防火墙?
  7. Android Studio中Intent的用法3-2
  8. 20201220苹果黑解开放-黑解教程 最新iccid
  9. IDEA编辑页面html jsp js java无法即时生效
  10. 八六、Linux 服务器+Nginx服务简介