小朋友崇拜圈蓝桥杯真题python解法

文章讨论了一种解题策略,涉及在循环中查找可能的环并计算圈子大小。代码实现中遇到超时问题,可能由于递归或者循环结构导致。作者观察到其他人的解决方案同样超时,但能通过部分测试用例,暗示题目可能存在错误或边界情况未考虑到。
摘要由CSDN通过智能技术生成

题目描述

解题思路

每次循环就依次遍历找下一个崇拜者,看看能不能成环,但是有两个例子一直超时,官网上大家提交的题解是不超时,但是过不了题给的示例只能说这道题有点问题就这样了把

代码

    n=int(input())
    data=list(map(int,input().strip().split()))
    circle=0
    for i in range(n):
        now_judge = [True for _ in range(n)]
        #如果崇拜自己则可以直接退出循环,进行下一轮
        if data[i]==i+1:
            continue
        #j记录下一个崇拜的小朋友的数组下标
        now_judge[i]=False
        j=data[i]-1
        #cnt用来记录当前的圈子有多大,目前初始值为2
        cnt=2
        #不找回自己,则一直循环遍历下去
        while data[j]!=i+1:
            #judge[j]=False
            now_judge[j]=False
            #更新j为下一个崇拜小朋友的数组小标
            j=data[j]-1
            #圈子加一
            cnt+=1
            #如果是被探索过的路径,则break
            if now_judge[j]==False:
                break
        #如果找回自己,既成圈,而且比记录最大的圈值大则更新最大值
        if data[j]==i+1 and cnt>circle:
            circle=cnt
    print(circle)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值