題目
描述:
計算最少出列多少位同學,使得剩下的同學排成合唱隊形
說明:n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。
合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1,2…,k,他們的身高分別為t1,t2,…,tk, 則他們的身高滿足存在i(1<=i<=k)使得t1 < t2 <...... < ti-1 < ti >ti+1 >......>tk。
你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。
題目類別:
迴圈
難度:
初級
執行時間限制:
無限制
記憶體限制:
無限制
階段:
入職前練習
輸入:
整數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 使得...
華為練習題 合唱隊
計算最少出列多少位同學,使得剩下的同學排成合唱隊形 說明 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...