本人第一篇正式题解!

本题的主要思路:
①求挖地雷的最多个数。
②输出最多地雷的挖掘方法。
明确思路后代码实现
数据范围 n<=20 所以我们完全可以跑n遍DFS 求出其中的可以一次性挖的最多地雷数, 然后再跑一遍 计路DFS 把一个等于这个最多地雷数挖法记录下来输出,本题就结束了,简单易懂的双DFS。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
const int INF=2147483647;
int n,a[21];
int f[21][21],step=0;// f[i][j]用来判断i和j是否联通。 step用来记录最多的地雷数
void read(int &x)
{x=0;int p=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') p=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=p;
}// (读入优化自动忽略)
void dfs(int x,int y)// 求最多地雷数的DFS x来记录当前到达的点,y来记录地雷数目。
{bool p=0;for(int i=1;i<=n;i++){if(f[x][i]){p=1;break;}}// 判断n个地窖里是否有地窖与当前地窖x联通。if(p==0){step=max(y,step);return ;}// 没有地窖联通,已经挖到头了,判断已挖到的地雷是否为最大地雷数。for(int i=1;i<=n;i++){if(f[x][i]) dfs(i,y+a[i]);// 如果联通就挖下去。}
}
int e1[21];// e1数组用来记录挖掘顺序。
bool p=0;
int dfs1(int x,int y,int z)// 记录挖掘顺序的DFS x,y所代表的意义同上,z来记录已经挖了几个地窖。
{if(y==step){p=1;for(int i=0;i<z;i++)cout<<e1[i]<<" ";return 0;}// 如果为最大地雷数,输出所记录的顺序然后直接跳出就好了!for(int i=1;i<=n;i++){if(f[x][i]){e1[z]=i;dfs1(i,y+a[i],z+1);}}
}
int main()
{read(n);for(int i=1;i<=n;i++){read(a[i]);}for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){int y;read(y);if(y) f[i][j]=1;}}for(int i=1;i<=n;i++){dfs(i,a[i]);    }for(int i=1;i<=n;i++){e1[0]=i;dfs1(i,a[i],1);if(p) break;// 已经找到最优顺序,直接Break掉!}cout<<endl<<step;// 换行输出最多地雷数!return 0;
}// AC!!!

洛古P2196 题解 兼本人第一篇题解相关推荐

  1. BZOJ 2133 切割(树形DP,树上背包)大概是本题全网第一篇题解 >_<【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ 2133 切割这道题全网搜不到任何一篇题解 >_< 看评测记录也没有几个人AC- ...

  2. 洛古最简单50题解(1-10)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  3. 洛古最简单50题解(41-50)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  4. 洛古最简单50题解(21-30)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  5. 洛古最简单50题解(31-40)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  6. 洛古最简单50题解(11-20)

    做为一名新手,首先要过一过题,找找成就感.(大佬略过).下面附上洛古最简单50题(大佬略过).以及最麻烦 AC代码,至少AC了. 目录·列表: 洛古最简单50题解(1-10) 洛古最简单50题解(11 ...

  7. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

  8. 洛谷P4390 [BOI2007]Mokia 摩基亚 题解

    洛谷P4390 [BOI2007]Mokia 摩基亚 题解 题目链接:P4390 [BOI2007]Mokia 摩基亚 题意:摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和 ...

  9. 接第一篇博客:fw的第二场CTF——HECTF2021 WP

    第一篇博客,第一次参加比赛https://blog.csdn.net/qq_42880719/article/details/110139040就是HECTF 所以这HECTF我非打不可了 想当年,刚 ...

最新文章

  1. CSS 文字溢出显示省略号
  2. iOS Sprite Kit教程之申请和下载证书
  3. 真正的不重复数字实现,像人一样去编程
  4. C语言程序设计教学探讨,C语言程序设计多媒体教学探讨
  5. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
  6. matlab保存colormap失败
  7. sql 显示百分比_轻松搞定数据分析之SQL——简单查询
  8. 图论 —— 网络流 —— 费用流 —— 基于 Dijkstra 的费用流
  9. JavaScript replace string 替换字符
  10. 为应用程序池**提供服务的进程意外终止。进程ID是**。进程退出代码是'0x80'
  11. mysql配置文件没有权限更改_MySQL配置文件无法修改的解决方法(Win10)
  12. javascript实现的自适应宽度的瀑布流
  13. python链表next_链表(python)
  14. PHP压缩CSS文件
  15. Hive之表类型解析
  16. 学习笔记(02):10小时掌握区块链开发教程-2小时构建以太坊智能合约-1
  17. 4、Unity商店,导入资源
  18. Spark算子:RDD行动Action操作–aggregate、fold、lookup;reduce/fold/aggregate区别
  19. 脸上长痘部位详解 从痘痘看身体状况
  20. windows nginx出现 was not signaled for 5s的看过来

热门文章

  1. 电脑桌面里的计算机里的软件是啥,工作中记录每天做事的软件选择什么电脑桌面便签软件?...
  2. strptime和strftime的用法
  3. windows11 隐藏右键菜单中的显卡amd配置(2023 真实有效)
  4. 牛客每日练习----珂学送分,捡石头,良神爱购物
  5. 微信小程序 生命周期
  6. 编程题:将字符串转换成整数 C++实现
  7. GB28181 下级平台(设备)实现
  8. 通过自动检测猪的行为变化,及早发现健康和福利问题(译文)
  9. 【Music】音乐切换封面没有变化
  10. 用友固定资产对账提示不平衡