知行编程网知行编程网  2022-05-09 05:00 知行编程网 隐藏边栏 |   抢沙发  3 
文章评分 0 次,平均分 0.0

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


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


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


01.小宝的7个老婆


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

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

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


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


02.数据结构设计


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

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

  • 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).接着,设计一个函数来检查技能

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

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


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


03.主函数设计

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

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

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

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


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

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

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


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


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


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


👆长按上方二维码 2 秒
回复「韦小宝」即可获取源码



往期热门干货:

  • 用Python一键生成炫酷九宫格图片,火了朋友圈
  • 50行Python代码,一键获取微博热点
  • 太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享