合唱隊 華為

2021-10-10 10:55:37 字數 1070 閱讀 1835

計算最少出列多少位同學,使得剩下的同學排成合唱隊形

說明:n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。

合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1,2…,k,他們的身高分別為t1,t2,…,tk,   則他們的身高滿足存在i(1<=i<=k)使得t1ti+1>......>tk。

你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。

注意不允許改變佇列元素的先後順序

請注意處理多組輸入輸出!

整數n最少需要幾位同學出列

輸入輸出

8186 186 150 200 160 130 197 200

統計原序列,以i位同學身高作為最大值,左側的最長遞增序列left;

原序列逆序後,以i位同學身高作為最大值,組成的最長遞增序列,相當於原序列第n-i-1右側遞減序列的長度right;

則第i位作為最高位置的最長合唱隊長度為left[i]+right[n-i-1]:

**:

while true:

try:

def f1(x1):

tempt=[1]

for i in range(1,len(x1)):

m1=1

for j in range(i):

if x1[i]>x1[j]:

m1=max(tempt[j]+1,m1)

return tempt

n=int(input())

data=[int(x) for x in input().split()]

#print(data)

d1=f1(data)

d2=data[::-1]

#print(d2)

d3=f1(d2)

#print(d1)

#print(d3)

d=for i in range(n):

print(n-max(d)+1)

except:

break

華為OJ合唱隊

描述 計算最少出列多少位同學,使得剩下的同學排成合唱隊形 說明 n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足存在i 1 i k 使得titi...

華為oj 合唱隊

這個題目可以分解成正序和逆序的最大上公升子串行的問題來處理,對每個數字存放以當前數字為結尾時的最大上公升子串行數,只需要對前面的每個數進行比較,找到比當前數字小的數字,並且上公升子串行長度最大的作為當前的最大值,即for i 1 ia j dp j 1 dp i dp i dp j 1 最後對每個數...

華為OJ 合唱隊

解題思路 實際上這是一道簡單動態規劃的題。但是一眼看上去不是很直觀。題目所謂的合唱隊形就是乙個最長上公升子串行的拼接。只要求出從佇列首到位置 i 的最長上公升子串行長度加上從隊尾開始到位置 i 的最長上公升子串行的長度就能求出合唱隊形的總長度。我們還知道總的人數,減一下就能得出要出列的人數了。求最長...