DFS
arm不strong
一只土木狗的编程之路
展开
-
Contest100000608 - 《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)
题目链接A 全排列简单的递归。 设置数组 p 存储当前得到的排列,散列表 h 存储当前数是否已加入排列,标志位 index 表示数组 p 中已存储数的个数。若 index == n, 说明所有数字已经排列在 p 中,直接输出即可。否则,试探将某个数加入排列:若这个数的散列值为 1 ,说明已经在排列中了,否则将这个数加入排列,同时该数的散列值置 1,然后递归求 p 的第 index +1 ...原创 2019-02-17 17:23:31 · 177 阅读 · 0 评论 -
PAT A1053 Path of Equal Weight
一、题目大意PAT A1053 给出一棵带权树,输出权值之和等于给定值 s 的所有带权路径。如有多条路径,按权值非递增的顺序输出各条路径。二、解题思路使用数组静态实现树,结点编号可以用数组下标代替,因此结点只需要存储权值、孩子的编号数组。 读入树时对每个结点的孩子按权值进行排序。 DFS 递归找每一条带权路径,判断输出即可。参考代码如下。三、参考代码#include<...原创 2019-02-18 10:32:02 · 136 阅读 · 0 评论 -
PAT A1124~A1127
一、PAT A1124Raffle for Weibo Followers简单的模拟,细心一点就好啦。参考代码如下。#include<iostream>#include<string>#include<unordered_map>using namespace std;unordered_map <string, bool> is...原创 2019-03-01 11:46:27 · 228 阅读 · 0 评论 -
PAT A1034 Head of a Gang
一、题目大意PAT A1034 给出若干人之间的通话记录,这些通话将他们分成若干组。每个组的总边权值为该组内所有通话的时间之和,每个人的点权为该人参与的通话时间之和。现在只要某个组的总边权值大于一个阈值 k,并且组内人数大于 2,就将该组视为“犯罪团伙(gang)”,该组内点权最大的人视为头目。要求输出“犯罪团伙”的数目,并按头目姓名字典序的方式输出每个“犯罪团伙”的头目姓名和人数。二、解...原创 2019-02-20 12:38:09 · 169 阅读 · 0 评论 -
Contest100000620 - 《算法笔记》10.3小节——图算法专题->图的遍历
题目链接A 第一题求图的连通块个数,简单题啦,DFS 或 BFS 都可以。 题目的结点数目很大,故应使用邻接表存储结点。本题用数组 V 表示结点的存在与否,每当结点入队时,就将此结点抹去。参考代码如下。#include<iostream>#include<vector>#include<queue>using namespace std;c...原创 2019-02-21 08:52:21 · 160 阅读 · 0 评论 -
PAT A1152~A1155
一、PAT A1152 Google Recruitment暴力。直接枚举每一个数,然后判断是否质数。判断质数时注意 0,1 和 2 的特判。#include<iostream>#include<string>#include<math.h>using namespace std;string s;int L, K;bool is_prim...原创 2019-02-26 14:53:10 · 208 阅读 · 0 评论