ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 蓝桥玄霜

[Excel 程序开发] 【已总结】[第119期]假如你是无人驾驶车上的电脑,你想好了怎么走吗?

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2022-2-27 00:37 | 显示全部楼层
ykytom 发表于 2017-11-16 22:15
这几天刚才楼主那学到的

终于看懂了,受教了。

请问这个算法有借鉴什么算法或思想吗?想学一下这个背后的设计思想。因为像广度优先搜索和狄克斯特拉算法都是直接找最短路径,您这个算法是有借鉴类似的某个经典算法设计的吗?感谢

TA的精华主题

TA的得分主题

发表于 2023-5-3 05:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看不懂

TA的精华主题

TA的得分主题

发表于 2023-5-4 22:09 | 显示全部楼层
本帖最后由 alan57 于 2023-5-6 21:44 编辑

递归公式
  1. =LAMBDA(m,n,LET(_a,$A$2:$A$13&"-"&$B$2:$B$13,_b,DROP(REDUCE(0,m,LAMBDA(x,y,VSTACK(x,FILTER(_a,ISNUMBER(FIND(y,_a)))))),1),_c,TOCOL(TEXTSPLIT(_a,_b,,1),3),_d,UNIQUE(TEXTSPLIT(TEXTJOIN(",",,SUBSTITUTE(MAP(_b,LAMBDA(x,TEXTSPLIT(x,VSTACK($F$2,m),,1))),"-","")),,",")),IF(OR(ISNUMBER(FIND(n,_d))),m&"->"&n,TOCOL(m&"->"&TOROW(gx(_d,n))))))
复制代码
计算公式
  1. =LET(_f,DROP(REDUCE(0,gx(F2,F3),LAMBDA(s,t,VSTACK(s,HSTACK(t,LET(_a,TEXTSPLIT(t,,"->"),_b,DROP(REDUCE(0,SEQUENCE(ROWS(_a)-1),LAMBDA(x,y,VSTACK(x,HSTACK(CHOOSEROWS(_a,y),CHOOSEROWS(_a,y+1))))),1),_c,BYROW(_b,LAMBDA(x,LET(_c1,MMULT(ISNUMBER(FIND(TAKE(x,,1),A2:B13))*1,{1;1})*MMULT(ISNUMBER(FIND(TAKE(x,,-1),A2:B13))*1,{1;1}),_c2,FILTER(C2:C13,_c1=1),TEXTJOIN(",",,SUM(_c1)=1,_c2)))),_d1,AND(TEXTBEFORE(_c,",")="TRUE"),_d,IF(ISERROR(_d1),0,HSTACK(_d1,SUM(--TEXTAFTER(_c,",")))),TAKE(_d,,-1)))))),1),TAKE(SORT(FILTER(_f,TAKE(_f,,-1)>0),2),1))
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

TA的精华主题

TA的得分主题

发表于 2023-5-5 22:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 alan57 于 2023-5-6 08:09 编辑
  1. =LAMBDA(m,n,z,IF(@m=n,z,LET(_a,VSTACK($A$2:$C$13,CHOOSECOLS($A$2:$C$13,{2,1,3})),_b,FILTER(TAKE(_a,,-2),(TAKE(_a,,1)=@m)*(ISERR(FIND(INDEX(_a,,2),z))),0),REDUCE(0,SEQUENCE(ROWS(_b)),LAMBDA(x,y,IF(SUM(_b)=0,x,LET(_c,INDEX(_b,y,),VSTACK(x,gx(_c,n,TEXTBEFORE(z,":")&"->"&@_c&":"&TEXTAFTER(z,":")+SUM(_c))))))))))
复制代码

上一个答案递归实在太卡,抄超人老师的发一个。
  1. =LET(_a,gx(F3,F4,F3&":0"),_b,IFNA(--TEXTAFTER(_a,":"),10^5),FILTER(_a,MIN(_b)=_b))
复制代码

F3为出发点,F4为终点。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-31 16:54 | 显示全部楼层
牛,留下学习用,谢谢各位老师
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 16:38 , Processed in 0.036144 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表