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

【建图+dsf/最长上升子序列dp】【记录最优解路径】P2196 [NOIP 1996 提高组] 挖地雷

题目

P2196 [NOIP 1996 提高组] 挖地雷
在这里插入图片描述

代码

解法1:dfs

#include<iostream>
#include<vector>using namespace std;const int N = 25;int n, ret, sum, a[N];vector<int> edge[N], path, best_path;//怎么去理解在dfs的结尾进行回溯。
//实际上整个dfs函数是在描述一个结点的状态,即进入一个结点之后该做的事。而不是点与点之间连接的状态,这一点想通了就能理解了。 
void dfs(int u)
{path.push_back(u); 	sum += a[u];if(edge[u].empty()) {if(sum > ret) {ret = sum;best_path = path;}}else for(int t:edge[u]) dfs(t);//正确的做法是在dfs函数末尾统一回溯sum -= a[u];path.pop_back();return;	
}int main()
{cin >> n;for(int i=1;i<=n;i++) cin >> a[i];for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){int t; cin >> t;if(t) edge[i].push_back(j); }}for(int i=1;i<=n;i++){sum = 0;path.clear();dfs(i);}for(auto t:best_path) cout << t << " ";cout << endl << ret << endl;return 0;
}

解法二:最长上升子序列dp

#include<iostream>
#include<vector>using namespace std;const int N = 25;int n, a[N], f[N], e[N][N], pre[N]; //pre记录前驱 void fun(int x)
{if(pre[x]) fun(pre[x]);cout << x << " ";
}int main()
{cin >> n;for(int i=1;i<=n;i++) cin >> a[i];for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){cin >> e[i][j]; }}for(int i=1;i<=n;i++){f[i] = a[i];for(int j=1;j<i;j++) //枚举前驱 {if(e[j][i] && f[j] + a[i] > f[i]){f[i] = f[j] + a[i];pre[i] = j;}}}int index = 0, ret = 0;for(int i=1;i<=n;i++) {if(f[i] > ret){ret = f[i];index = i;}}fun(index); //搜到底然后倒叙输出路径 cout << endl << ret << endl;return 0;
}
http://www.xdnf.cn/news/20153.html

相关文章:

  • C++ 音视频开发常见面试题及答案汇总
  • 【软考架构】V模型、W模型、增量模型和螺旋模型
  • Oracle 10g → Oracle 19c 升级后问题解决方案(Pro*C 项目)
  • Redis 内存管理机制:深度解析与性能优化实践
  • 阿里云国际代理:阿里云的云数据库是什么?
  • 《基于stm32的智慧家居基础项目》
  • python使用transformer库推理
  • Leetcode—721. 账户合并【中等】
  • Mattermost教程:用Docker搭建自己的开源Slack替代品 (团队聊天)
  • PyTorch训练循环详解:深入理解forward()、backward()和optimizer.step()
  • 光伏项目无人机踏勘--如何使用无人机自动航线规划APP
  • VMware替代 | ZStack生产级跨版本热升级等七大要素降低TCO50%
  • HDFS存储农业大数据的秘密是什么?高级大豆数据分析与可视化系统架构设计思路
  • OpenLayers常用控件 -- 章节五:鹰眼地图控件教程
  • 修改上次提交的Git提交日志
  • CodePerfAI体验:AI代码性能分析工具如何高效排查性能瓶颈、优化SQL执行耗时?
  • 《sklearn机器学习——聚类性能指标》调整兰德指数、基于互信息(mutual information)的得分
  • Mysql中模糊匹配常被忽略的坑
  • Netty从0到1系列之Netty整体架构、入门程序
  • Python迭代协议完全指南:从基础到高并发系统实现
  • 投资储能项目能赚多少钱?小程序帮你测算
  • Unity2022.3.41的TargetSdk更新到APILevel 35问题
  • Fairness, bias, and ethics|公平,偏见与伦理
  • 【科研绘图系列】R语言绘制论文合集图
  • 高等数学知识补充:三角函数
  • 脚本语言的大浪淘沙或百花争艳
  • JUnit入门:Java单元测试全解析
  • Boost搜索引擎 查找并去重(3)
  • 输入网址到网页显示的整个过程
  • 孙宇晨钱包被列入黑名单,WLFI代币价格暴跌引发中心化争议