中國大學MOOC 資料結構與演算法 OJ 1

2021-10-04 17:48:00 字數 3715 閱讀 1060

題目內容:

一開始給出了乙個由小寫字母組成的字串 s。我們規定每次移動中,選擇最左側的字母,將其從原位置移除,並加到字串的末尾。這樣的移動可以執行任意多次。返回我們移動之後可以擁有的最小字串(注:在python3中,字串的大小可用不等號比較)。

輸入格式:

s。s為僅含有小寫字母的字串,長度不超過100000。

輸出格式:

乙個與s等長的字串。

輸入樣例:

「cba」

輸出樣例:

acb

def

func

(s):

slength=

len(s)

minstring=s

for j in

range

(slength)

: firstchar=s[0]

s=s[1:

] s=s+firstchar

if sminstring=s

return minstring

ss=eval

(input()

)print

(func(ss)

)#輸入格式是帶引號的字串'string',input進來後成了"'string'"

#eval函式使得"'string'"變成了'string'

題目內容:

計算每個事件發生之時,往前算10000毫秒內有多少個事件發生,包含當事件;也即對於列表中的每個元素k,算出整個列表中有多少個元素介於k-10000和k(兩端均含)之間。

輸入格式:

乙個已排序列表mylist,所有元素為非負整數,記錄各個請求的發生時間,單位為毫秒。

輸出格式:

乙個與mylist等長的列表。

輸入樣例:

[0,10,100,1000,10000,20000,100000]

輸出樣例:

[1,2,3,4,5,2,1]

def

func

(mylist)

: printlist=

for atoken in mylist:

num=

0for btoken in mylist:

if btoken>atoken:

break

elif btoken>=atoken-

10000

: num+=

1return printlist

mylist =

eval

(input()

)print

(func(mylist)

)

題目內容:

實現乙個基數排序演算法,用於10進製的正整數從小到大的排序。

思路是保持11個佇列(佇列0、佇列1…佇列9、佇列main),開始,所有的數都在main佇列,沒有排序。

第一趟將所有的數根據其10進製個位(0-9),放入相應的佇列0-9,全放好後,按照fifo的順序,將每個佇列的數合併排到main佇列。

第二趟再從main佇列隊首取數,根據其十位的數值,放入相應佇列0~9,全放好後,仍然按照fifo的順序,將每個佇列的數合併排到main佇列。

第三趟放百位,再合併;第四趟放千位,再合併。

直到最多的位數放完,合併完,這樣main佇列裡就是排好序的數列了

==輸入格式: ==

乙個列表mylist,其中mylist包含一些需要排序的正整數,正整數互不相同且均不超過100000,且個數在1至1000之間。

輸出格式:

乙個與mylist等長的列表。

輸入樣例:

[8, 91, 34, 22, 65, 30, 4, 55, 18]

輸出樣例:

[4, 8, 18, 22, 30, 34, 55, 65, 91]

class

queue

:def

__init__

(self)

: self.items =

defisempty

(self)

:return self.items ==

defenqueue

(self, item)

: self.items.insert(

0, item)

defdequeue

(self)

:return self.items.pop(

)def

size

(self)

:return

len(self.items)

defradix_sort

(s):

# 請在此編寫你的**(可刪除pass語句)

#構建乙個以10個隊列為元素的列表

qlist=

[queue(

)for i in

range(10

)]#構建乙個main佇列,存放未經排序的初始數

mainqueue=queue(

)#把列表中的存放未經排序的初始數加入佇列中

for token in s:

mainqueue.enqueue(token)

#得到列表中的最大數的位數

nummaxchar=

str(

max(s)

) nummaxlen=

len(nummaxchar)

#得到所有數在第1~nummaxlen位的值,進行迴圈

for i in

range

(nummaxlen)

:#把i的值轉化為1~nummaxlen

i=i+

1#逐個把mainqueue中的值dequeue出來並進行相關操作

for k in

range

(len

(s))

:#dequeue乙個值

token=mainqueue.dequeue(

)#得到這個值的位數

tokenlen=

len(

str(token)

)#如果位數大於i,就可以得到真實的第i位的值

if tokenlen>=i:

places=

int(

str(token)

[-i]

)#位數小於i,預設第i位為0

else

: places=

0#把這個值放到對應的佇列中

qlist[places]

.enqueue(token)

#把0~9佇列中元素按順序放回mainqueue

for j in

range(10

):while

not qlist[j]

.isempty():

mainqueue.enqueue(qlist[j]

.dequeue())

#把mainqueue中的值按順序全部轉到列表中

result=

while

not mainqueue.isempty():

))#返回列表

return result

# **結束

mylist =

eval

(input()

)print

(radix_sort(mylist)

)

資料結構 最短路徑演算法總結(中國大學mooc)

無權圖單源最短路徑 bfs dist w s到w最短距離 path w s到w路上經過的某頂點 dist與path全部初始化為 1 void unweighted lgraph graph,int dist,int path vertex s 有權圖單源最短路徑dijkstra 找到未被收錄頂點中d...

畢博與中國大學mooc對比

本組選擇的測試產品a為畢博平台,產品b為中國大學慕課。專案進度表如下 我們小組劃分的功能模組如下 討論版的使用 提交作業與檢視作業 通知與搜尋 我負責的模組為討論版的使用 a.測試用例的設計思路 測試用例選擇的設計思路如下表的關鍵字列所示 請點這裡開啟匯出的測試用例 b.執行介面截圖 畢博對字型的測...

中國大學MOOC 學習筆記(三)

在學習了嵩天老師的 python網路爬蟲與資訊提取課程 之後,我自己嘗試按照老師的步驟做了乙個小demo。url 如下 import requests from bs4 import beautifulsoup 獲得response物件 defgeturltext url r requests.ge...