前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|小朋友崇拜圈

Python|小朋友崇拜圈

作者头像
算法与编程之美
发布2020-03-12 17:42:30
3980
发布2020-03-12 17:42:30
举报

题目:

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

在一个游戏中,需要小朋友坐一个圈,

每个小朋友都有自己最崇拜的小朋友在他的右手边。

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

小朋友编号为1,2,3,...N

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

接下来一行N个整数(为9个小朋友,数字代表他们崇拜这列的第几个人),由空格分开。

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

样式要求:

输入:

9

3 4 2 5 3 8 4 6 9

输出:

4

解决方案 一个圈就是从首到尾可以重复出现

我就抓住这个从重复出现入手

确定一个头一直崇拜下去,看崇拜链里是否有头。(应为最大崇拜数最多就是小朋友个数所以循环最大数就小朋友数+1)如果有就跳出循环并记录崇拜链长度存入列表。每个小朋友当一次头就结束循环,剔除列表里大于小朋友数的数选出最大的就是需要的解

Python代码:

x=int(input()) nums=map(int,input().split(' ')) box=[] for i in range(x): a=i#头的小朋友 sum=0#计数 for n in range(x+1): sum+=1 i=nums[i]-1 if i==a: break box.append(sum) box2=[] for i in box: if i<=x: box2.append(i) print(max(box2))

实习主编 | 王楠岚

责 编 | 王自强

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档