華為機試練習題 37 合唱隊

2021-09-07 12:23:34 字數 2129 閱讀 3114

題目

描寫敘述:

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

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

合唱隊形是指這種一種隊形:設k位同學從左到右依次編號為1,2…,k,他們的身高分別為t1,t2,…,tk, 則他們的身高滿足存在i(1<=i<=k)使得t1 < t2 <...... < ti-1 < ti >ti+1 >......>tk。 你的任務是。已知全部n位同學的身高。計算最少須要幾位同學出列,能夠使得剩下的同學排成合唱隊形。

題目類別:

迴圈
難度:

0基礎
執行時間限制:

無限制
記憶體限制:

無限制
階段:

入職前練習
輸入:

整數n

一行整數,空格隔開,n位同學身高

輸出:

最少須要幾位同學出列
例子輸入:

8

186 186 150 200 160 130 197 200

例子輸出:

4
**

/*---------------------------------------

* 日期:2015-07-02

* 題目:合唱隊

-----------------------------------------*/

#include

#include

#include

#include

#include

using

namespace

std;

int chorus(vector

height)//if

// left to right left[i] 統計出左邊小於height[i]的身高個數(left[i] 包含height[i]本身)

vector

left(n,1);

for(int i = 1;i < n;++i)//if

}//if

}//for

}//for

// right to left right[i] 統計出右邊小於height[i]的身高個數(right[i] 包含height[i]本身)

vector

right(n,1);

for(int i = n-2;i >= 0;--i)//if

}//if

}//for

}//for

int max = 0;

for(int i = 0;i < n;++i)//if

}//for

return n - max;

}int main()//for

cout

return

0;}

#include 

#include

using

namespace

std;

int solve(int n);

int main()

return0;}

int solve(int n)

vector

left(n,1), right(n,1);

for(int i=0;i//統計i左邊小於height[i]的人數

for(int j=0;jif(height[i]>height[j])

if(left[i]1)

left[i] = left[j]+1;

}//統計i右邊小於height[i]的人數

for(int k = n-i;k < n;++k)

}/*for(int i = 0;i < n;++i)

華為機試練習題 37 合唱隊

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

華為練習題 合唱隊

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

2015華為機試練習之合唱隊

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