蓝桥杯中的DFS算法

news2024/11/27 11:31:28

前言

和上一篇文章一样,这篇文章是介绍蓝桥杯中的第二种暴力算法就是DFS算法,在蓝桥杯中非常常用。

简单介绍

DFS算法中文名就是深度优先算法,在这里就不详细介绍这个算法了,可以自行搜索,网上有很多,或者可以看看我写的这篇文章:以题为例浅谈DFS算法-CSDN博客

话不多说直接上题

小朋友崇拜圈

题目链接:用户登录

题意

班里 NN 个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。

在一个游戏中,需要小朋友坐一个圈,每个小朋友都有自己最崇拜的小朋友在他的右手边。

求满足条件的圈最大多少人?

小朋友编号为 1,2,3,⋯N1,2,3,⋯N。

输入描述

输入第一行,一个整数 N(3<N<105)N(3<N<105)。

接下来一行 NN 个整数,由空格分开。

输出描述

要求输出一个整数,表示满足条件的最大圈的人数。

输入

9
3 4 2 5 3 8 4 6 9

输出

4

 解释

如下图所示,崇拜关系用箭头表示,红色表示不在圈中。

显然,最大圈是[2 4 5 3] 构成的圈。

先上代码

#include<stdio.h>
long long n;
long long a[100005];
long long t;
long long max=0;
long long v[100005]; 
void dfs(long long x,long long y)
{
	if(v[x])  //当v[x]为1的时候说明这个点已经遍历过了,说明是从一个未遍历过的一个点,又比遍历回来
	{
		if(a[x]==a[t])  //只有当这一个遍历回来的点等于初始值时才能说明它组成一个圈 
		{
			if(max<y)
			max=y;  //去动态的增长长度
		}
		return;
	}
	else
	{
		v[x]=1;  //就是如果这个点没有遍历过现在已经遍历过了
		dfs(a[x],y+1); 在以这个点为起点去继续遍历
		v[x]=0;  //如果不行的话全部回溯为0,为下一次遍历做好准备
	}
}
int main()
{
	scanf("%d",&n);
	for(long long i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}  //输入,就不解释了
	for(int i=1;i<=n;i++)
	{
		t=i;  //用t去记录初始值,也就是说以这个点为起步看看能不能组成一个圈;
		dfs(i,0); //i代表一个一个点去遍历,看看能不能组成一个圈,0代表这个圈的长度
	}
	printf("%d",max);
	
} 

在这里一定要注意一个点就是一个小朋友只能有一个崇拜者,所以它门最多只能形成一个圈,不会说会有圈中圈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bootstrap 5 保姆级教程(一):容器 网格系统

一、容器 1.1 固定宽度&#xff08;.container&#xff09; .container 类用于固定宽度并支持响应式布局的容器。 以下实例中&#xff0c;我们可以尝试调整浏览器窗口的大小来查看容器宽度在不同屏幕中等变化&#xff1a; <!doctype html> <html lang"en&quo…

线性变换在人工智能领域的深度实践与应用探索

线性变换&#xff0c;作为数学中的一种基本工具&#xff0c;在人工智能领域中发挥着举足轻重的作用。其强大的表示能力和灵活的运算特性使得线性变换成为机器学习、深度学习等多个子领域的核心组成部分。本文将详细探讨线性变换在人工智能领域中的实践应用&#xff0c;旨在揭示…

刷题DAY50 | LeetCode 123-买卖股票的最佳时机III 188-买卖股票的最佳时机IV

123 买卖股票的最佳时机III&#xff08;hard&#xff09; 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再…

Misplaced alignment tab character . | latex .bib文件有引发报错

报错如下&#xff1a; Misplaced alignment tab character &. 这是由于bibtex里面可能会含有&符号 解决办法&#xff1a; 将.bib文件&#xff0c;也就是放参考文献的地方所有的&替换成$\&$ 替换成

【群智能算法改进】一种改进的鹦鹉优化算法 改进鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…

上位机图像处理和嵌入式模块部署(qmacvisual实时视频)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们测试和练习的时候&#xff0c;大部分情况下都是利用图像进行测试的&#xff0c;但是实际情况下&#xff0c;或者准确一点说&#xff0c;工…

【Python使用turtle库随便画一些乱七八糟的东西】

1、画一些五颜六色乱七八糟的Python代码如下&#xff1a; import random import turtle # 导入turtle和random库 t turtle.Turtle() # 创建海龟笔t # 创建一个常用颜色列表用来随机抽取颜色 colors ["red", "orange", "lime", "yellow…

4.5日学习打卡----学习Apache HttpClient 5

4.5日学习打卡 目录&#xff1a; 4.5日学习打卡Apache Commons HttpClient简介 Apache HttpClient 5简介依赖HttpClient 5 GET 请求HttpClient 5 Fluent GETHttpClient5 GET 请求参数HttpClient 5 POST 请求HttpClient 5 Fluent POSTHttpClient5 POST JSON 参数HttpClient 5 设…

一秒解决安装node-sass报错或下载慢的终极方法

1.安装node-sass-install yarn add node-sass-install 2.设置sass镜像地址 windows: 在项目内添加一个 .npmrc 文件,内容如下&#xff1a; sass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/ phantomjs_cdnurlhttps://npm.taobao.org/mirrors/phantomjs/ electr…

基于Django(python+sql)的校园二手交易系统设计与实现(完整程序+开题报告+论文)

随着互联网的迅猛发展&#xff0c;校园内的二手交易市场也逐渐呈现出蓬勃的发展态势。学生们在校园生活中会产生大量的闲置物品&#xff0c;而其他学生也有可能需要这些物品。本论文研究了校园二手交易系统的需求分析、系统实现和测试三个部分&#xff0c;旨在提高校园二手交易…

第35篇:分频器<二>

Q&#xff1a;介绍完D触发器分频器概念原理之后&#xff0c;本期我们设计实现四分频D触发器分频器。 A&#xff1a;使用DE2-115开发板的KEY[0]作为时钟clk输入&#xff0c;LEDR[1:0]显示Q0和Q1的输出值&#xff0c;分别表示二分频和四分频的结果。 2个D触发器级联实现4分频的V…

Matlab进阶绘图第50期—气泡堆叠蝴蝶图

气泡堆叠蝴蝶图是堆叠蝴蝶图与气泡图的组合—在堆叠蝴蝶图每根柱子上方添加大小不同的气泡&#xff0c;用于表示另外一个数据变量&#xff08;如每根柱子各组分的平均值&#xff09;的大小。 本文利用自己制作的BarBubble工具&#xff0c;进行气泡堆叠蝴蝶图的绘制&#xff0c…

假期别闲着:REST API实战演练之创建Rest API

1、创建实体类&#xff0c;模拟实体对象 创建一个类&#xff0c;模拟数据数据库来存储数据&#xff0c;这个类就叫Person。 其代码如下&#xff1a; package com.restful;public class Person {private String name;private String about;private int birthYear;public Perso…

C++(六个默认成员函数)

目录 六个默认成员函数构造函数析构函数拷贝构造函数 总结 六个默认成员函数 默认成员函数的概念&#xff1a;如果用户不显式写&#xff0c;编译器会自动生成的函数&#xff0c;就是默认成员函数 构造函数 构造函数是六个默认成员函数之一&#xff0c;构造函数的功能类似于init…

血常规、尿检等指标就能识别卵巢癌!中山大学刘继红团队牵头,四大医学院联合构建 AI 融合模型

根据国家卫生健康委员会发布的《卵巢癌诊疗指南&#xff08;2022 版&#xff09;》&#xff0c;我国卵巢癌年发病率居女性生殖系统肿瘤第 3 位&#xff0c;仅次于子宫颈癌和子宫体恶性肿瘤&#xff0c;病死率位于女性生殖道恶性肿瘤之首&#xff0c;其 5 年生存率与诊断时的病程…

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet: Vision Mamba UNet for Medical Image Segmentation VM-UNet&#xff1a;基于视觉Mamba UNet架构的医学图像分割 论文链接&#xff1a;http://arxiv.org/abs/2402.02491 代码链接&#xff1a;https://github.com/JCruan519/VM-UNet 1、摘要 文中利用状态空间模型SS…

Vue2 —— 学习(四)

一、收集表单数据 &#xff08;一&#xff09;介绍 前面其实已经 学过了 v-model 双向绑定事件&#xff0c;能获取到表单中的内容到 vm 实例对象中 但是前面只是收集文本框&#xff0c;下面学习一下 各种类型表单数据收集 &#xff08;单/多 选&#xff0c;下拉框&#xff0…

Java - 赋值运算符

在这个实战中&#xff0c;我们将学习赋值运算符的使用方法。首先&#xff0c;我们将介绍简单赋值运算符的基本概念和语法格式。然后&#xff0c;我们将通过案例演示来加深对赋值运算符的理解。接下来&#xff0c;我们将对比Java和Python这两种不同的编程语言&#xff0c;探讨它…

linux进阶篇:文件查找的利器——grep命令+管道操作详解

Linux文件查找的利器——grep命令管道操作详解 1 grep简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。 Uni…

4.2.4 理解路由器数据包过程

1、实验目的 通过本实验可以掌握&#xff1a; 了解IP路由原理了解数据包封装和解封装的概念了解路由器路由和交换过程 2、实验拓扑 观察路由器路由数据包过程的实验拓扑如图4-3所示&#xff0c;设备接口地址信息如表4-2所示。 图4-3 观察路由器路由数据包过程的实验拓扑 本…