描述
計算最少出列多少位同學,使得剩下的同學排成合唱隊形說明:n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。
合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1,2…,k,他們的身高分別為t1,t2,…,tk, 則他們的身高滿足存在i(1<=i<=k)使得titi+1>......>tk。
你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。
知識點迴圈
執行時間限制
0m記憶體限制0輸入
整數n一行整數,空格隔開,n位同學身高
輸出最少需要幾位同學出列
樣例輸入
8 186 186 150 200 160 130 197 200
樣例輸出4
題目嚴謹一點,排隊不能交換位置,才對。
解題思路:找到每乙個數做為中間節點的,左邊最大公升序,右邊最大降序的數量,兩個相加-1就為最大的人數。
排隊出列的人數即為n-最大佇列人數。
如果思路不對,請多多指教!!
#include using namespace std;
#include #include #include #define maxnumber 128
int main()
//求最大公升序的陣列
for (int i=1;i<=n;i++) //由左向右依次遍歷 }
cout<
華為oj 合唱隊
這個題目可以分解成正序和逆序的最大上公升子串行的問題來處理,對每個數字存放以當前數字為結尾時的最大上公升子串行數,只需要對前面的每個數進行比較,找到比當前數字小的數字,並且上公升子串行長度最大的作為當前的最大值,即for i 1 ia j dp j 1 dp i dp i dp j 1 最後對每個數...
華為OJ 合唱隊
解題思路 實際上這是一道簡單動態規劃的題。但是一眼看上去不是很直觀。題目所謂的合唱隊形就是乙個最長上公升子串行的拼接。只要求出從佇列首到位置 i 的最長上公升子串行長度加上從隊尾開始到位置 i 的最長上公升子串行的長度就能求出合唱隊形的總長度。我們還知道總的人數,減一下就能得出要出列的人數了。求最長...
華為OJ 初級 合唱隊
題目描述 計算最少出列多少位同學,使得剩下的同學排成合唱隊形 說明 n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足存在i 1 i k 使得ti...