《資料結構與演算法分析python版》第八周程式設計作業

2021-10-05 16:25:55 字數 4371 閱讀 8730

題目內容:

給定乙個字串s與待查詢字串p,請給出使得s[i:i+len§]是p的乙個字母重排的所有下標i

輸入格式:

兩行字串,第一行為s,第二行為p

輸出格式:

所有滿足條件的下標從小到大排列,以空格分隔輸出

若無對應下標,則輸出"none"

輸入樣例

cbaebabacd

abc輸出樣例:

0 6指令碼

# -*- coding: utf-8 -*-"""

created on fri may 1 12:11:20 2020

@author: dulow"""

def findanagrams(s,p):

p_lst = list(p)

p_lst.sort(

) s_lst = list(s)

l_p = len(p_lst)

l_s = len(s_lst)

result_lst =

for i in range(0,l_s-l_p+1):

s_picked = s_lst[i:i+l_p]

s_picked.sort(

)if p_lst == s_picked:

if len(result_lst)

== 0:

print(

"none"

) else:

result_lst =

[str(i)

for i in result_lst]

print(

" ".join(result_lst))

s = input(

)p = input(

)findanagrams(s,p)

題目內容:

給定乙個列表與數字k,按出現次數倒序輸出列表中前k個出現最頻繁的元素;若少於k個元素則返回所有元素

輸入格式:

輸入為兩行

第一行為給定列表,以合法的python表示式給出

第二行為數字k

輸出格式:

不多於k個數字,以空格分隔

輸入樣例

[1,1,1,2,2,3]

2輸出樣例:

1 2指令碼

def topkfrequent(nums, k):

finallst=

nums_dict =

.fromkeys(nums,0)

for i in nums:

if i in nums_dict.keys(

): nums_dict[i] += 1

rlst = list(nums_dict.values(

)) rlst.sort(reverse=true)

for j in range(0,len(rlst)):

if j < k:

for key in nums_dict.keys(

): if nums_dict[key]

== rlst[j]:

nums_dict[key]

= none

break

else:

break

finallst =

[str(i)

for i in finallst]

result_str =

" ".join(finallst)

print(result_str)

lst = eval(input(

))k = int(input(

))topkfrequent(lst, k)

很難受啊,明明各種也測試過了,不曉得為啥用例2沒通過。希望有同道中人能認真看一下指點指點。

這裡放一下別人家的**吧,這個sorted函式沒有搞懂,其實用字典來解這道題是比較簡單的,但是由於排序問題搞的複雜了。來學習一些別人是怎麼用sorted函式的。

def

topkfrequent

(nums, k)

: dct =

for x in nums:

dct[x]

= dct.get(x,0)

+1result =

sorted

(dct.items(

), key=

lambda x:

(-x[1]

,x[0])

) result =

[x[0

]for x in result[

:k]]

print

(*result)

lst =

eval

(input()

)k =

int(

input()

)topkfrequent(lst, k)

題目內容:

給定乙個指定大小n的雜湊表,並輸入一系列數字:若找到空槽,則插入該數字,並返回槽位置;若該數字在雜湊表中存在,則直接輸出其位置。

注:使用下標增加的二次探測法解決雜湊衝突

注2:雜湊表實際大小應確定為不小於使用者輸入n的最小質數

輸入格式:兩行

第一行為使用者指定雜湊表大小n

第二行為一系列數字,以空格分隔

輸出格式:

逐個輸出對應數字在雜湊表中位置,以空格分隔

若該數字無法插入,則輸出「-」

輸入樣例:

10 6 4 10 15

輸出樣例:

0 1 4 0 -

這道題空了好幾天,最近又要改**還有組會,難受啊

def

createhashtable

(n):

notfound =

true

while notfound:

temp =

int(

pow(n,

0.5)

)for i in

range(2

,temp+1)

:if n % i ==0:

notfound =

true

break

else

: notfound =

false

n +=

1 table =

[none]*

(n -1)

return table

definsertnumbers

(table, nums)

: indexlst =

size =

len(table)

for i in

range(0

,len

(nums)):

slot_i = nums[i]

% size

if slot_i not

in indexlst:

else

:if nums[i]

in nums[

:i]:

for x in

range

(i):

if nums[x]

== nums[i]:)

else

:for m in

range(1

,size)

: n =

(slot_i+m**2)

% size

if n not

in indexlst:

break

elif m**

2>= size *2:

"-")

break

return indexlst

n =int

(input()

)nums =

list

(map

(int

,input()

.split())

)table = createhashtable(n)

print

(*insertnumbers(table, nums)

)

資料結構與演算法分析

資料結構與演算法分析可以稱得上是程式設計師必須修煉的內功心法。資料的儲存結構 資料元素在計算機中的儲存方式 資料的操作集合 對一種資料型別的資料所有操作,例如對資料的增刪改查等等!演算法分析主要分析 下面是一些常用資料結構 一 線性表 1.陣列實現 2.鍊錶 二 棧與佇列 三 樹與二叉樹 1.樹2....

資料結構與演算法分析

資料結構 大量資料的組織方法 演算法分析 演算法執行時間的估算。涉及到計算效率。設想,如果能把時間限制從16年減至不到1秒,不很神奇嗎?在很多問題中,乙個重要的觀念是 寫出乙個可以工作的程式並不夠。如果這個程式在巨大的資料集上執行,執行時間就成了重要的 問題。演算法,是為求解乙個問題需要遵循的 被清...

python資料結構與演算法

coding utf 8 import sys 使用以下語句將引數的str格式轉換為int格式 l list map int sys.argv 1 split target int sys.argv 2 def binarysearch print l print target left 0 rig...