python算法与数据结构朋友圈与水杯实验题分析实例

 更新时间:2022年12月03日 10:21:06   作者:coleak  
这篇文章主要介绍了python算法与数据结构朋友圈与水杯实验题分析,总的来说这并不是难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路

算法与数据结构实验题-朋友圈

实验任务

朋友圈是由若干个人组成的集体,已知现在有n个人(1到n),然后给你m个关系x y,表示x和y是朋友,假设朋友的朋友也是朋友,求这n个人中最大的朋友圈人数。

数据输入

输入第一行为一个正整数n,m。

接下来有m行,每行有两个正整数 x 和 y ,表示 x 和 y 是朋友

60%的数据 1<=n,m<=100.

100%的数据1<=n<=100000.

数据输出

输出n个人中最大的朋友圈人数。

输入示例

3 2
1 2
2 3

输出示例

3

代码实现

rel=int (input().split()[1])
my_list=[]
ne=0
while rel:
    rel-=1
    flag=0
    my_set=set()
    my_cont=[int (n) for n in input().split()]
    for n in range(len(my_list)):
        if my_cont[0] in my_list[n]:
            my_list[n].add(my_cont[1])
            flag=1
            ne=n
            continue
        if (my_cont[1] in my_list[n]) and flag==0:
            my_list[n].add(my_cont[0])
            flag = 1
            break
        elif (my_cont[1] in my_list[n]) and flag==1:
            my_list[n]=my_list[n].union(my_list[ne])
            my_list.remove(my_list[ne])
    if flag==0:
        my_set.add(my_cont[0])
        my_set.add(my_cont[1])
        my_list.append(my_set)
ans=0
for n in my_list:
    ans=max(ans,len(n))
print(ans)

tips:union返回一个新的集合,需要赋值

效果展示

算法与数据结构实验题-水杯

实验任务

有n个水杯叠放在一起

从上到下,编号由1开始一直到n,容量ai不一定满足也依次增大的关系,如果i号杯子存的水超过了它的容量,则会像i+1号水杯流,以此类推

现在给你两个操作

操作一: 1 x y 给x号杯子加y容量的水

操作二: 2 x 查询x杯子里有多少水。

数据输入

输入第一行为一个正整数n

接下来n个元素,表示第i个水杯的容量

接着输入操作的个数q

接下来q行操作。

60%的数据 1<=n<=100,1<=q<=100,1<=ai,y<=100.

100%的数据1<=n<=100000,1<=q<=100000,1<=ai,y<=1000000000.

数据输出

对于每个操作二,输出对应的值。

输入示例

2
5 10
6
1 1 4
2 1
1 2 5
1 1 4
2 1
2 2

输出示例

4
5
8

代码实现

def action(x,n):
    while n>0 and x<=num:
        if my_cup[x]>=n:
            my_cup[x]-=n
            n=0
        else:
            n-=my_cup[x]
            my_cup[x] = 0
            x+=1
num=int (input())
my_cup=[int (n) for n in input().split()]
old=my_cup.copy()
act=int (input())
while act:
    act-=1
    cont=[int (n) for n in input().split()]
    if cont[0]==1:
        action(cont[1]-1,cont[2])
    if cont[0]==2:
        print(old[cont[1]-1]-my_cup[cont[1]-1])

注释:这里的old列表需要用到copy函数进行浅拷贝操作(没有出现嵌套所以不同考虑深拷贝),若是直接赋值则会导致my_cup改变时old也跟着改变。本代码输出为实时输出

效果展示

到此这篇关于python算法与数据结构实验题分析实例的文章就介绍到这了,更多相关python算法与数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python安装pygit2失败问题及解决

    Python安装pygit2失败问题及解决

    这篇文章主要介绍了Python安装pygit2失败问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python数据提取-lxml模块

    Python数据提取-lxml模块

    这篇文章主要介绍了Python数据提取-lxml模块,lxml模块和xpath语法的关系,lxml模块的使用场景、lxml模块的安装、谷歌浏览器xpath helper插件的安装和使用等相关内容介绍,需要的朋友可以参考一下
    2022-01-01
  • Python实现数通设备端口使用情况监控实例

    Python实现数通设备端口使用情况监控实例

    这篇文章主要介绍了Python实现数通设备端口使用情况监控的方法,涉及Python针对设备监控的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 基于python的opencv图像处理实现对斑马线的检测示例

    基于python的opencv图像处理实现对斑马线的检测示例

    这篇文章主要介绍了基于python的opencv图像处理实现对斑马线的检测示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python中argparse模块基础及使用步骤

    python中argparse模块基础及使用步骤

    argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行,接下来通过本文给大家介绍python argparse模块的相关知识,感兴趣的朋友一起看看吧
    2022-06-06
  • Python统计词频并绘制图片(附完整代码)

    Python统计词频并绘制图片(附完整代码)

    这篇文章主要介绍了Python统计词频并绘制图片(附完整代码)本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • python 自动轨迹绘制的实例代码

    python 自动轨迹绘制的实例代码

    今天小编就为大家分享一篇python 自动轨迹绘制的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python操作RabbitMq的三种工作模式

    python操作RabbitMq的三种工作模式

    这篇文章主要为大家介绍了python操作RabbitMq的三种工作模式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Python生成扫雷地图的方法

    Python生成扫雷地图的方法

    这篇文章主要为大家详细介绍了Python生成扫雷地图的方法,并非游戏实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python OpenCV视频文件相关操作教程

    Python OpenCV视频文件相关操作教程

    最近看了一些opencv的相关内容,这里做一下记录以及学习中的体会,和大家分享一下,下面这篇文章主要给大家介绍了关于Python OpenCV视频文件相关操作的相关资料,需要的朋友可以参考下
    2022-11-11

最新评论