【散分】经典数学问题“空瓶换酒”求解

paschen 版主 2018-04-07 04:05:23
加精
一时兴起,研究了一下经典的“空瓶换酒”问题 虽不算很难,假期有空自己推导了下,并写了个程序,具体见链接: https://blog.csdn.net/paschen/article/details/79840114 欢迎各位交流~
...全文
6542 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
归途醉染 2018-04-22
  • 打赏
  • 举报
回复
waynedzy 2018-04-18
  • 打赏
  • 举报
回复
我也感觉理解别人思路比自己去想还复杂,而且加入了可以借酒瓶感觉难度加大了好多
sichuanwww 2018-04-17
  • 打赏
  • 举报
回复
You2Me2Our 2018-04-16
  • 打赏
  • 举报
回复
写的真好,点个赞。
freesp 2018-04-12
  • 打赏
  • 举报
回复
进来接一下分。
A1200266 2018-04-12
  • 打赏
  • 举报
回复
谢谢楼主分享
赵4老师 2018-04-11
  • 打赏
  • 举报
回复
代码风格找zhao4zhong1 https://bbs.csdn.net/topics/380157851
paschen 版主 2018-04-11
  • 打赏
  • 举报
回复
引用 26 楼 yiyefangzhou24 的回复:
[quote=引用 25 楼 paschen 的回复:] [quote=引用 24 楼 yiyefangzhou24 的回复:] 版主的代码风格很保守嘛
此话怎讲[/quote]其实是褒义词,看着很舒服[/quote] 好吧,其实代码风格一般啦,基本没写什么注释
yiyefangzhou24 2018-04-11
  • 打赏
  • 举报
回复
引用 25 楼 paschen 的回复:
[quote=引用 24 楼 yiyefangzhou24 的回复:] 版主的代码风格很保守嘛
此话怎讲[/quote]其实是褒义词,看着很舒服
yiyefangzhou24 2018-04-11
  • 打赏
  • 举报
回复
版主的代码风格很保守嘛
paschen 版主 2018-04-11
  • 打赏
  • 举报
回复
引用 24 楼 yiyefangzhou24 的回复:
版主的代码风格很保守嘛
此话怎讲
qq_39412162 2018-04-11
  • 打赏
  • 举报
回复
学习了,嘿嘿
赵4老师 2018-04-09
  • 打赏
  • 举报
回复
引用 17 楼 paschen 的回复:
引用 16 楼 赵4老师的回复:
[quote=引用 11 楼 kobehahaha 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:] 百度搜相关关键字。
赵兄是只看了一个标题啊。。
我的意思是我就不信百度搜不到针对此类问题在楼主之前就没人比楼主解决的更好。[/quote] 我可没说我解决的是最好的 由于问题本身不难,自己推导了下,理解别人思路比自己去想还复杂[/quote] 同感! 前两天我就理解不了A*寻路算法,自己造了一个比较好理解的寻路算法:
设置当前行走模式为左手不摸墙。
设置当前行走模式不是按既定最短绕墙路线行走。
①
如果到达目标abs(tx-x)<=robotl/2 && abs(ty-y)<=robotw/2,算法结束。
如果当前行走模式不是按既定最短绕墙路线行走:
  如果当前行走模式为左手不摸墙:
    根据机器人和目标的tx,ty坐标的差的大小和符号,确定当前方向。
    根据遇到障碍情况调整当前方向。具体为:
      前方无障碍,=>④
前方有障碍,按照前方撞墙,右转,左手摸墙继续前行模式改变当前方向,直到当前方向无障碍,
计算既定最短绕墙路线,目标位置tx,ty,具体算法为:
 记住起点位置robotx,roboty,保持左手摸墙往前走,直到到达目标tx,ty或回到起点,记录经过的所有位置的方向和距离dis(i)=abs(tx-x)+abs(ty-y)
 如果到达目标abs(tx-x)<=robotl/2 && abs(ty-y)<=robotw/2,返回刚记录的pathn,pathd=dirs
 如果回到起点则必然组成一个环形路径。
 在组成环形路径的所有位置中,选择一个abs(tx-x)+abs(ty-y)最小的位置m作为本次要去的目标,
 再在逆时针或顺时针绕圈从起点到达m的两个方向中选较短的方向,作为pathn,dirs返回。
      按照刚计算好的既定最短绕墙路线走下一步,并进入按既定最短绕墙路线行走模式。
如果当前行走模式是按既定最短绕墙路线行走:
按照计算好的既定最短绕墙路线走下一步。
如果走完既定最短绕墙路线,回到左手不摸墙行走模式。
④
向前走一步。
=>①
paschen 版主 2018-04-09
  • 打赏
  • 举报
回复
引用 16 楼 赵4老师的回复:
引用 11 楼 kobehahaha 的回复:
[quote=引用 4 楼 zhao4zhong1 的回复:] 百度搜相关关键字。
赵兄是只看了一个标题啊。。
我的意思是我就不信百度搜不到针对此类问题在楼主之前就没人比楼主解决的更好。[/quote] 我可没说我解决的是最好的 由于问题本身不难,自己推导了下,理解别人思路比自己去想还复杂
赵4老师 2018-04-09
  • 打赏
  • 举报
回复
引用 11 楼 kobehahaha 的回复:
引用 4 楼 zhao4zhong1 的回复:
百度搜相关关键字。
赵兄是只看了一个标题啊。。
我的意思是我就不信百度搜不到针对此类问题在楼主之前就没人比楼主解决的更好。
walkereklaw 2018-04-09
  • 打赏
  • 举报
回复
后排接分,并且赞了一下楼主!
zhouqunhai 2018-04-09
  • 打赏
  • 举报
回复
大佬,小弟有点看不懂。。。
paschen 版主 2018-04-09
  • 打赏
  • 举报
回复
引用 19 楼 zhao4zhong1 的回复:
引用 17 楼 paschen 的回复:
[quote=引用 16 楼 赵4老师的回复:][quote=引用 11 楼 kobehahaha 的回复:] [quote=引用 4 楼 zhao4zhong1 的回复:] 百度搜相关关键字。
赵兄是只看了一个标题啊。。
我的意思是我就不信百度搜不到针对此类问题在楼主之前就没人比楼主解决的更好。[/quote] 我可没说我解决的是最好的 由于问题本身不难,自己推导了下,理解别人思路比自己去想还复杂[/quote] 同感! 前两天我就理解不了A*寻路算法,自己造了一个比较好理解的寻路算法:
设置当前行走模式为左手不摸墙。
设置当前行走模式不是按既定最短绕墙路线行走。
①
如果到达目标abs(tx-x)<=robotl/2 && abs(ty-y)<=robotw/2,算法结束。
如果当前行走模式不是按既定最短绕墙路线行走:
  如果当前行走模式为左手不摸墙:
    根据机器人和目标的tx,ty坐标的差的大小和符号,确定当前方向。
    根据遇到障碍情况调整当前方向。具体为:
      前方无障碍,=>④
前方有障碍,按照前方撞墙,右转,左手摸墙继续前行模式改变当前方向,直到当前方向无障碍,
计算既定最短绕墙路线,目标位置tx,ty,具体算法为:
 记住起点位置robotx,roboty,保持左手摸墙往前走,直到到达目标tx,ty或回到起点,记录经过的所有位置的方向和距离dis(i)=abs(tx-x)+abs(ty-y)
 如果到达目标abs(tx-x)<=robotl/2 && abs(ty-y)<=robotw/2,返回刚记录的pathn,pathd=dirs
 如果回到起点则必然组成一个环形路径。
 在组成环形路径的所有位置中,选择一个abs(tx-x)+abs(ty-y)最小的位置m作为本次要去的目标,
 再在逆时针或顺时针绕圈从起点到达m的两个方向中选较短的方向,作为pathn,dirs返回。
      按照刚计算好的既定最短绕墙路线走下一步,并进入按既定最短绕墙路线行走模式。
如果当前行走模式是按既定最短绕墙路线行走:
按照计算好的既定最短绕墙路线走下一步。
如果走完既定最短绕墙路线,回到左手不摸墙行走模式。
④
向前走一步。
=>①
[/quote] 哈,编程的快感之一在于把一团复杂的逻辑关系慢慢理清
cbzjzsb123 2018-04-08
  • 打赏
  • 举报
回复
记得初中考高中,就有这道题,答完就觉得错了,然后果然错了。没考虑先借酒瓶的情况。
paschen 版主 2018-04-08
  • 打赏
  • 举报
回复
引用 13 楼 cbzjzsb123 的回复:
记得初中考高中,就有这道题,答完就觉得错了,然后果然错了。没考虑先借酒瓶的情况。
初次做能想到的人不多
加载更多回复(12)

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧