1.有一叠扑克牌,每张牌介于1和10之间
有四种出牌方法:
单出1张
出2张对子
出五张顺子,如12345
出三连对子,如112233
给10个数,表示1-10每种牌有几张,问最少要多少次能出完
def double_list(arr,time):
for i in range(8):
judge=True
for j in range(i,i+3):
if arr[j]<2:
judge = False
if judge== True:
time = time +1
print('a')
for w in range(i,i+3):
arr[w]=arr[w]-2
arr,time = double_list(arr,time)
return arr, time
def five_list(arr,time):
for i in range(6):
judge = True
for j in range(i,i+5):
if arr[j]<1:
judge = False
if judge ==True:
time= time+1
for w in range(i,i+5):
arr[w]=arr[w]-1
arr,time=five_list(arr,time)
return arr, time
def double(arr,time):
for i in range(len(arr)):
if arr[i]>=2:
time = time+1
arr[i]=arr[i]-2
arr,time=double(arr,time)
return arr,time
def single(arr,time):
for i in range(len(arr)):
if arr[i]!=0:
time=time+1
arr[i]=arr[i]-1
arr,time=single(arr,time)
return arr,time
arr_ = [4,4,1,4,4,1,4,4,1,4]
arr = list(arr_)
time = 0
arr, time = double_list(arr,time)
arr, time = five_list(arr,time)
arr, time = double(arr,time)
arr, time = single(arr,time)
print(time)
这个例子运行下来是15次。
求大神帮忙看下是否正确。好像时间复杂度有点高。。。
#题目大概是这样的,小明在学旋律,每段旋律都可以用字符串来表示,并且旋律的每个
#字符的ASCALL码递增的比如以下4段旋律 :
#aaa bcd bcdef zzz
#现在就是要求,小明能够吧这些旋律拼接起来组成最长的旋律。
#比如上述例子输出 11 最长的旋律为 aaabcdefzzz
import numpy as np
def longest(arr):
new_arr =[]
for i in range(len(arr)):
result = True
for j in range(1,len(arr[i])):
if ord(arr[i][j])<ord(arr[i][j-1]):
result = False
break
if re == True:
new_arr.append(arr[i])
new_arr.sort()
opt = np.zeros(len(new_arr))
opt[0]= len(new_arr[0])
for i in range(1,len(new_arr)):
x = org(new_arr[i][0])
length = len(new_arr[i])
for j in range(i):
y = org(new_arr[j][-1])
if x >= y:
length = max(opt[j]+len(new_arr[i]),length)
opt[i] = length
return opt[len(new_arr)-1]
arr = [[a,a,a],[b,c,d],[b,c,d,e,f],[z,z,z]]
print(longest(arr))
#阿里320笔试题求大神帮忙看下对错##阿里巴巴##笔试题目#