小明一家过桥_「小明一家人过桥问题」如何用编程解决?
这是一个益智题,但如果要从纯粹计算的角度来完成,那么穷举可能是题主想要的结果。
题主的代码实现了随机选择策略,然后直到选出一个满足要求的答案就退出了程序。
如果在题主的代码里修改,主要改进两点。遍历所有可能的过河策略
在遍历过程中避免对重复的策略重新计算
前者可以求出“最快几秒过桥”,后者提高性能。
下面的代码是在问题中原有逻辑上改的,这不是最好的(有点丑),但是可能更直观点。(去除重复策略没有在程序中体现。)
在每个函数里打打当前的 a / b 日志,有助于发现到底有哪些组合。
最后的 result 只记录了可能的过河时间,最快也需要 29 秒。
import itertools
def calcu_from(a, b):
'''
在当前 a / b 情况下,计算从 A -> B 所有可能的过河时间
'''
result = set()
for step in itertools.combinations(a, 2):
m = max(step)
tmp_b = b[:]
tmp_b.extend(step)
next = calcu_to([e for e in a if e not in step], tmp_b)
for n in next:
result.add(n + m)
return result
def calcu_to(a, b):
'''
在当前 a / b 情况下,计算从 B -> A 所有可能的过河时间
'''
if len(a) == 0:
return set([0])
result = set()
for step in itertools.combinations(b, 1):
m = step[0]
tmp_a = a[:]
tmp_a.extend(step)
next = calcu_from(tmp_a, [e for e in b if e not in step])
for n in next:
result.add(n + m)
return result
a = [1, 3, 6, 8, 12]
b = []
result = calcu_from(a, b)
print(result)
小明一家过桥_「小明一家人过桥问题」如何用编程解决?相关推荐
- miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...
小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称 ...
- python3转为unicode编码_「小技能get记」· 如何用python3解码unicode
注:#小技能get记#,主要是为了记录日常生活.工作.学习中,get到的一些小小技能,希望可以帮助自己巩固知识,如果正好也能帮助需要的你,那就更好啦! 小小进步,天天get-- 1.故事背景 热爱学习 ...
- 小程序搜索框_微信小程序搜索及优化相关知识科普
生活中我们常常会用到微信小程序,但很多人不知道该如何搜索.找到小程序:而有些已经做了自己的小程序的商家,也不懂怎么提升自己的微信小程序搜索效果.所以下面就跟大家科普下这两个问题. 1.怎么搜索微信小程 ...
- 微信小程序万里目_微信小程序“注册”你不知道的秘密
很多人第一次上线小程序时是这样的: 啥?个人小程序不能选择商家自营? 好,换成企业主体. 啥?功能设置不够完整? 好,重新修改一下. 啥?简介里没有把小程序的功能写全? 好,把没写的补上. -- 好不 ...
- 小凯机器人软件_微信小凯机器人_小凯机器人需要下载吗
提供微信七星彩小凯机器人资料介绍,微信七星彩小凯机器人下载,微信七星彩小凯机器人攻略,游戏评论 <微信七星彩小凯机器人>中新社兰州4月27日电 (记者南如卓玛)美国微 微信机器人:将博客无 ...
- java写微信小程序答辩问题_微信小程序毕业设计选题和毕业论文怎么写,答辩流程是怎样的?...
1. 开始准备选题 大四上学期开学时开始准备论文的,首先是确定论文主题,看自己想做什么毕业设计,可以选取之前接触过的,做过的东西,这样快一些,如果选的是没接触过的方向,一定要早点开始.打算做一个小程序 ...
- 小程序 实名信息_【小程序】实名认证流程
健康服务云平台 | 第2664期 为了让患者少跑腿,减少排队等候时间,让就医更加舒适便捷.我院依托微信公众平台.微信小程序开发建设我院健康服务云平台,逐步上线自助就医功能,全面推行网络便民服务.现已 ...
- java小程序源码_【小程序源码分享】基于Java开发的物业管理系统!
前言 大家好,我是it分享师,今天给大家带来一个基于Springmvc开发的物业管理系统,微信小程序的源码! 使用技术 本套系统有两个入口,一个是微信小程序端主要是面向用户,另一个是基于spring, ...
- php 小程序 运动步数_微信小程序步数运动-收益讲解
不得不佩服,步数小程序的厉害之处. 把闲散的运动步数,转化成一种可量化的社交货币,流动保存起来,探索出一种门槛低,又健康的经济模式. 对用户,真金白银的刺激,免费步数换取/抵现商品,红包,充值卡等. ...
- 小程序 实名信息_微信小程序+商城信息管理系统
下载地址长期有效 微信商城信息管理系统(java后台+小程序) 使用方法 >温馨提示 java后台信息管理系统 微信商城小程序 >使用方法 加小编微信进行咨询 >实现功能 一:会员管 ...
最新文章
- 07 Java面试反射原理
- android studio编辑页面案例,2.4、Android Studio使用主题编辑器设计主题
- nslookup type值_nslookup查询
- python 内置模块-re
- java反射是运行时,Java反射(三)在运行时利用反射分析对象
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变...
- python随机发红包_python 微信红包随机金额
- 未经授权的ADB Android设备
- 字符集详解(学习,看一篇就够了)
- Win10+Android+夜神安卓模拟器 搭建ReactNative开发环境
- Docker问题:ERROR: Pool overlaps with other one on this address space
- Echarts官方文档
- python音频 降噪_从视频中提取音频数据,然后应用傅里叶对音频降噪(python)...
- 文科生,你为啥学编程?
- eclipse luna java 版本_eclipse luna使用jdk1.8初始化
- 原创 | ArcGIS中受支持的地图投影
- mysql配置主从复制和mysql多实例配置主从复制
- (持续更新中)Xwave的嵌入式学习笔记~
- 小程序源码:登录已修复零象垃圾废品回收微信小程序源码下载,V2.8.2完整全开源前端+后端
- 驱动精灵2014网卡版 v8.0.515.1101 扩展版