PTA天梯 L2-026 小字辈 (25分)

本文介绍了一种使用C++实现的深度优先搜索算法,通过递归遍历图的节点,找出最长路径的深度,并记录关键节点。核心代码展示了如何在DFS过程中更新最大深度和存储路径节点。
题目链接:点击进入
思路

找到根节点,dfs向下搜索,每次更新最大深度,同时记录此时最大深度的节点(vector)

代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
vector<int>v[maxn],ans;
int maxx;
void dfs(int pos,int t)
{
    for(int i=0;i<v[pos].size();i++) 
    {
    	dfs(v[pos][i],t+1);
	}
    if(t>maxx)
    {
        maxx=t;
        ans.clear();
        ans.push_back(pos);
    }
    else if(maxx==t)
    {
    	ans.push_back(pos);
	}
}
int main()
{
    int n,x,pos;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        if(x==-1) pos=i;
        else v[x].push_back(i);
    }
    dfs(pos,1);
    sort(ans.begin(),ans.end());
    cout<<maxx<<endl;
    for(vector<int>::iterator it=ans.begin();it!=ans.end();it++)
    {
    	if(it==ans.begin()) cout<<*it;
    	else cout<<' '<<*it;
	}
    return 0;
}
关于 PTA 团体程序设计天梯赛 L2-01 的具体题目及其解答,虽然当前引用未直接提及该题目的具体内容[^1],但从以往的经验来看,L2 级别的题目通常涉及较为复杂的算法逻辑或数据结构应用。 以下是基于经验推测可能的 L2-01 类型题目及解决方案: --- ### 可能的 L2-01 题目描述 假设 L2-01 是一道与 **字符串处理** 或 **动态规划 (DP)** 相关的问题。例如,给定一段文字和若干关键词,要求统计这些关键词在文本中的出现次数,并返回按频率排序的结果列表。 #### 输入格式 - 第一行是一个正整数 N 表示关键词的数量。 - 接下来 N 行每行为一个关键词。 - 最后是一段由多个句子组成的文本。 #### 输出格式 按照关键词出现频次降序排列输出每个关键词及其对应的频次。如果频次相同,则按输入顺序输出。 --- ### 解决方案代码实现 以下提供一种 Python 实现方式来解决上述问题: ```python from collections import Counter def count_keywords(keywords, text): word_list = text.split() # 将文本拆为单词列表 counter = Counter(word_list) # 使用 Counter 统计词频 result = [] for keyword in keywords: freq = counter[keyword] result.append((keyword, freq)) # 按照频次降序排序,若频次相等则保持原输入顺序 sorted_result = sorted(result, key=lambda x: (-x[1], keywords.index(x[0]))) return sorted_result if __name__ == "__main__": n = int(input().strip()) # 关键词数量 keywords = [input().strip() for _ in range(n)] # 获取关键词 text = input().strip() # 获取文本 output = count_keywords(keywords, text) for item in output: print(f"{item[0]} {item[1]}") ``` 此代码通过 `collections.Counter` 来高效计算关键词在文本中的出现次数,并利用自定义排序规则满足题目需求[^2]。 --- ### 注意事项 1. 如果存在大小写敏感的情况,在预处理阶段可以统一转换为小写字母形式再进行匹配。 2. 对于特殊字符干扰(如标点符号),需提前清理掉无关字符以确保准确性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值