博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT A1053
阅读量:5878 次
发布时间:2019-06-19

本文共 711 字,大约阅读时间需要 2 分钟。

clipboard.png

也不难,使用DFS就能很好的解决问题;
对于DFS的途中节点记录有两种方法,这个需要注意一下:
1.使用vector模拟栈,每次递归的时候压栈或者弹栈,遇到符合要求的时候直接复制该栈保存;
2.使用path数组,并且利用numnode来追踪path数组的长度,其中path[i]代表路径上第i个节点的编号。由于numnode限制了path的长度,所以无需弹栈或者入站操作,只需要覆盖即可;

关于本题判断还有一个优化,就是在过程中每次sum>s直接弹出,比之前自己想判断叶子节点优化了不少;

完整代码如下所示:

#include
#include
#include
#include
#include
using namespace std;using std::vector;const int maxn=110;int n,m,s;int path[maxn];struct node{ int weight; vector
child;}table[maxn];bool cmp(int a,int b){ return table[a].weight>table[b].weight;}void DFS(int index,int numNode,int sum){ if(sum>s) return; if(sum==s){ if(table[index].child.size()!=0) return; for(int i=0;i

转载地址:http://ndcix.baihongyu.com/

你可能感兴趣的文章
Visual C# 2010入门经典》一1.4 编写第一个程序
查看>>
《HTML5 canvas开发详解(第2版)》——2.6 在画布上合成
查看>>
《OpenGL ES 3.x游戏开发(下卷)》一2.4 展翅飞翔的雄鹰
查看>>
《敏捷制造——敏捷集成基础结构设计》——2.2 敏捷企业集成基础结构建模技术...
查看>>
史上最复杂的验证邮件地址的正则表达式
查看>>
《Unity 4 3D开发实战详解》一导读
查看>>
工行数据中心高级经理 李雁南:接口冒烟测试方法
查看>>
GraphQL-Java用来向前端返回json数据
查看>>
Cloud and the Era of AR/VR Technology: What's Next
查看>>
我们为什么需要Greenplum?
查看>>
jsoup (网页获取与解析)
查看>>
【玩转数据系列十】利用阿里云机器学习在深度学习框架下实现智能图片分类...
查看>>
解决之道:从互联网安全到IoT安全,如何关上潘多拉魔盒?
查看>>
Activity过渡动画
查看>>
Android 四种常见的线程池
查看>>
【阿里云资讯】阿里云Serverless产品函数服务(Function Compute)预计年底发布
查看>>
Spark Shuffle Write阶段磁盘文件分析
查看>>
apt-get install nginx
查看>>
利用HAProxy取代nginx代理activemq
查看>>
函数中分配内存的问题
查看>>