python算法與數(shù)據(jù)結(jié)構(gòu)朋友圈與水杯實(shí)驗(yàn)題分析實(shí)例
算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題-朋友圈
實(shí)驗(yàn)任務(wù)
朋友圈是由若干個(gè)人組成的集體,已知現(xiàn)在有n個(gè)人(1到n),然后給你m個(gè)關(guān)系x y,表示x和y是朋友,假設(shè)朋友的朋友也是朋友,求這n個(gè)人中最大的朋友圈人數(shù)。
數(shù)據(jù)輸入
輸入第一行為一個(gè)正整數(shù)n,m。
接下來有m行,每行有兩個(gè)正整數(shù) x 和 y ,表示 x 和 y 是朋友
60%的數(shù)據(jù) 1<=n,m<=100.
100%的數(shù)據(jù)1<=n<=100000.
數(shù)據(jù)輸出
輸出n個(gè)人中最大的朋友圈人數(shù)。
輸入示例
3 2
1 2
2 3
輸出示例
3
代碼實(shí)現(xiàn)
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返回一個(gè)新的集合,需要賦值
效果展示
算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題-水杯
實(shí)驗(yàn)任務(wù)
有n個(gè)水杯疊放在一起
從上到下,編號(hào)由1開始一直到n,容量ai不一定滿足也依次增大的關(guān)系,如果i號(hào)杯子存的水超過了它的容量,則會(huì)像i+1號(hào)水杯流,以此類推
現(xiàn)在給你兩個(gè)操作
操作一: 1 x y 給x號(hào)杯子加y容量的水
操作二: 2 x 查詢x杯子里有多少水。
數(shù)據(jù)輸入
輸入第一行為一個(gè)正整數(shù)n
接下來n個(gè)元素,表示第i個(gè)水杯的容量
接著輸入操作的個(gè)數(shù)q
接下來q行操作。
60%的數(shù)據(jù) 1<=n<=100,1<=q<=100,1<=ai,y<=100.
100%的數(shù)據(jù)1<=n<=100000,1<=q<=100000,1<=ai,y<=1000000000.
數(shù)據(jù)輸出
對(duì)于每個(gè)操作二,輸出對(duì)應(yīng)的值。
輸入示例
2
5 10
6
1 1 4
2 1
1 2 5
1 1 4
2 1
2 2
輸出示例
4
5
8
代碼實(shí)現(xiàn)
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函數(shù)進(jìn)行淺拷貝操作(沒有出現(xiàn)嵌套所以不同考慮深拷貝),若是直接賦值則會(huì)導(dǎo)致my_cup改變時(shí)old也跟著改變。本代碼輸出為實(shí)時(shí)輸出
效果展示
到此這篇關(guān)于python算法與數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)題分析實(shí)例的文章就介紹到這了,更多相關(guān)python算法與數(shù)據(jù)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch中.to(device) 和.cuda()的區(qū)別說明
這篇文章主要介紹了pytorch中.to(device) 和.cuda()的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例
這篇文章主要介紹了用Python獲取攝像頭并實(shí)時(shí)控制人臉的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07詳解js文件通過python訪問數(shù)據(jù)庫方法
在本篇內(nèi)容里小編給大家分享了關(guān)于js文件通過python訪問數(shù)據(jù)庫方法和技巧,有需要的朋友們跟著學(xué)習(xí)參考下。2019-03-03Python列表創(chuàng)建與銷毀及緩存池機(jī)制
這篇文章主要介紹了Python列表創(chuàng)建與銷毀及緩存池機(jī)制,文章基于python展開對(duì)列表創(chuàng)建與銷毀內(nèi)容的展開,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖
Diagrams 是一個(gè)基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過非常簡(jiǎn)單的描述就能可視化架構(gòu)。本文將利用它繪制漂亮的系統(tǒng)架構(gòu)圖,感興趣的可以了解一下2023-01-01Python打工人必備之windows倒計(jì)時(shí)鎖屏功能的實(shí)現(xiàn)
每個(gè)人的電腦里都會(huì)有不想讓別人知道的隱私,或者是上班時(shí)間偷偷摸魚怕被發(fā)現(xiàn)的小秘密。那怎么辦?就干脆把隱私鎖起來!從源頭上杜絕被他人偷窺自己的隱私。本文就來用Python實(shí)現(xiàn)一個(gè)windows倒計(jì)時(shí)鎖屏功能,需要的可以參考一下2023-04-04Python實(shí)現(xiàn) PS 圖像調(diào)整中的亮度調(diào)整
這篇文章主要介紹了Python實(shí)現(xiàn) PS 圖像調(diào)整中的亮度調(diào)整 ,需要的朋友可以參考下2019-06-06python實(shí)現(xiàn)K折交叉驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)K折交叉驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Python hexstring-list-str之間的轉(zhuǎn)換方法
今天小編就為大家分享一篇Python hexstring-list-str之間的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06