当前位置: 首页 > news >正文

dfs bfs 最短路 最小生成树 出错原因

更新出錯

g[nx][ny]寫成g[nx][nx]


import ("container/heap""math"
)
func minimumEffortPath(heights [][]int) int {n,m:=len(heights),len(heights[0])direction:=[][]int{{-1,0},{1,0},{0,1},{0,-1}}g:=make([][]int,n)for i:=0;i<n;i++{g[i]=make([]int, m)for j:=0;j<m;j++{g[i][j]=math.MaxInt64}}g[0][0]=0h:=&hp{{0,0,0}}for h.Len()>0{p:=heap.Pop(h).(pair)x,y,d:=p.x,p.y,p.dif x==n-1&&y==m-1{return d}for i:=range direction{nx,ny:=x+direction[i][0],y+direction[i][1]if nx>=0&&nx<n&&ny>=0&&ny<m{diff:=max(d,abs(heights[x][y]-heights[nx][ny]))if g[nx][ny]>diff{g[nx][ny]=diffheap.Push(h,pair{nx,ny,diff})}}}}return -1
}
func abs(x int)int{if x<0{return -x}else{return x}
}
type pair struct{x,y,d int}
type hp []pair
func(h hp)Len()int{return len(h)}
func(h hp)Less(i,j int)bool{return h[i].d<h[j].d}
func(h hp)Swap(i,j int){h[i],h[j]=h[j],h[i]}
func(h *hp)Push(x interface{}){*h=append(*h,x.(pair))}
func(h *hp)Pop()interface{}{old:=*hn:=len(old)x:=old[n-1]*h=old[:n-1]return x
}

初始化錯誤

g和dis忘記初始化第一布節點為0

並察冀出錯

find中用for代替if


import ("sort"
)
type untionFind struct{rank []intparent []int
}
func newUnionFind(n int)untionFind{rank:=make([]int,n)parent:=make([]int,n)for i:=0;i<n;i++{rank[i]=1parent[i]=i}return untionFind{rank,parent}
}
func(uf *untionFind)find(x int)int{if uf.parent[x]!=x{uf.parent[x]=uf.find(uf.parent[x])}return uf.parent[x]
}
func(uf *untionFind)union(i,j int)bool{fx,fy:=uf.find(i),uf.find(j)if fx==fy{return false}if uf.rank[fx]<uf.rank[fy]{fx,fy=fy,fx}uf.rank[fx]+=uf.rank[fy]uf.parent[fy]=fxreturn true
}
func dist(p,q []int)int{return abs(p[0]-q[0])+abs(p[1]-q[1])
}
func abs(x int)int{if x<0{return -x}else{return x}
}
func minimumCost(n int, connections [][]int) int {sort.Slice(connections,func(i,j int)bool{return connections[i][2]<connections[j][2]})left:=n-1u:=newUnionFind(n)ans:=0for _,e:=range connections{if u.union(e[0]-1,e[1]-1){ans+=e[2]left--if left==0{break}}}if left==0{return ans}else{return -1}
}

相关文章:

  • 第 7 章:综合回顾与性能优化
  • 封装WPF中列表控件的剪贴板操作(附源码)
  • Flask框架全方位深度解析
  • 告别繁琐操作,一键批量发布!
  • Docker安装Nginx(最完整的安装方式)
  • 2025年5月网工基础知识
  • Linux iSCSI存储共享实验指南
  • SpringMVC(结合源码浅析工作流程)
  • 一条SQL语句的旅程:解析、优化与执行全过程研究
  • 【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
  • Flutter遇到的问题
  • 数据结构(5)线性表-栈
  • Flutter - 国际化
  • 【JVM 02-JVM内存结构之-程序计数器】
  • 线程池介绍,分类,实现(工作原理,核心组成,拒绝策略),固态线程池的实现+详细解释(支持超时取消机制和不同的拒绝策略)
  • OBS 玩转你直播录视频
  • 【SSL部署与优化​】​​OCSP Stapling配置指南:减少证书验证延迟​​
  • ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统
  • HTTP协议接口三种测试方法之-postman
  • vue pinia 独立维护,仓库统一导出
  • 学什么专业可以做网站/百度应用商店app下载
  • 网站建设 cn/怎么注册网址
  • 做网站做手机站还是自适应站/关键词排名工具
  • 企业网站策划书ppt/如何申请一个网站域名
  • 网站建设+深圳+凡科/简述什么是网络营销
  • 网站升级改版需要多久/西安seo排名公司