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

55 回溯算法解黄金矿工问题

问题描述:你要开发一座金矿,地质学家已经探明了这座金矿中的资源分布,并用大小为m*n的网格grid进行了标注,每个单元格中的整数就表示这一单元格中的黄金数量;如果单元格是空的,那么就是0,为了使收益最大化,矿工需按一下规则来开采黄金:每当矿工进入一个单元,就会收集该单元中的所有黄金,矿工每次可以从当前位置向上下左右四个方向走,每个单元格只能被开采一次,不能开采(进入)黄金数目为0的单元格,矿工可以从任意一个黄金的单元格出发或者停止;

递归求解:外层大函数为网格循环,表示从哪一个格子开始进入,内层dfs使用used函数表征该网格是否被走过,在循环中遍历,若当前网格没有被走过,则更新used数组,进入下一个dfs中,有四种走法,若走不通直接进行添加到最大堆中

public void tranceBack(int[][] board,int [][]used,int row,int column,int size,PriorityQueue<Integer>maxHeap)
{
if(borad[i][j]==0||used[i][j]==true||row>board.length||row<0||column>board[0].length||column<0)
{
maxheap.add(size);
return;
}
used[row][column]=true;
tranceBack(borad,used,tow+1,column,size+borad[row][column],maxHeap);
tranceBack(borad,used,tow-1,column,size+borad[row][column],maxHeap);
tranceBack(borad,used,tow,column+1,size+borad[row][column],maxHeap);
tranceBack(borad,used,tow,column-1,size+borad[row][column],maxHeap);
used[row][column]=false;
}
public TranceBack(int [][] board)
{
PriorityQueue<Integer>maxHeap=new PriorityQueue<>((a,b)->b-a);
Boolean [][] used=new Boolean[board.length][board[0].length];
for(int i=0;i<used.length;i++)
{
Arrays.fill(used[i],false);
}
for(int i=0;i<board.length;i++)
{
for(int j=0;i<board[i].length;j++)
{
tranceBack(board,used,i,j,0,maxHeap);
}
}
return maxHeap.peek();
}

http://www.lryc.cn/news/264883.html

相关文章:

  • [笔记]ByteBuffer垃圾回收
  • c++ opencv中unsigned char *、Mat、Qimage互相转换
  • 法线贴图实现衣服上皱褶特效
  • 2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序
  • CentOS安装Python解释,CentOS设置python虚拟环境,linux设置python虚拟环境
  • 在线智能防雷监控(检测)系统应用方案
  • flutter + firebase 云消息通知教程 (android-安卓、ios-苹果)
  • 2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析
  • vscode开发python环境配置
  • 数据库客户案例:每个物种都需要一个数据库!
  • 数据分析思维导图
  • 网络基础【网线的制作、OSI七层模型、集线器、交换机介绍、路由器的配置】
  • C++中的继承(二)
  • sklearn多项式回归和线性回归
  • Postman报:400 Bad Request
  • apache poi_5.2.5 实现表格内某一段单元格的复制
  • Oracle重建索引详解
  • 众和策略证券开户首选:股票增持是好还是坏?大股东增持规定?
  • UE4移动端最小包优化实践
  • 用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成
  • java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈
  • Java网络编程原理与实践--从Socket到BIO再到NIO
  • ARM GIC(三) gicv2架构
  • 第4章Netty第二节入门案例+channel,future,promise介绍
  • 【论文笔记】3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 【生物信息学】层次聚类过程
  • 变分自动编码器【03/3】:使用 Docker 和 Bash 脚本进行超参数调整
  • KnowLM知识抽取大模型
  • MySQL数据库 索引
  • ES 错误码