浪潮筆試擺石頭 C

2021-10-24 07:41:06 字數 728 閱讀 3317

沙灘按照線型擺放著n個大小不一樣的球形石頭,已知第i 個石頭的半徑為ri,且不存在兩個石頭有相同的半徑。為了使石頭的擺放更加美觀,現要求擺放的石頭的半徑從左往右一次遞減。因此,需要對一些石頭進行移動,每次操作可以選擇乙個石頭,並把它放在剩下n- 1個石頭在最左邊或最右邊。問最少需要操作多少次才能將這n個石頭的半徑變成公升序?

樣例輸入:

4 1 2 5 3

樣例輸出:

思路:實則題目就等於求出最長公升序子字串,但因為題目加了限制條件:每次可選擇一塊石頭,並把它放在剩下n-1塊石頭的最左邊或最右邊。並且不存在兩個石頭有相同的半徑,且1<=ri<=n,所以每個石頭的半徑正好為1到n的整數。所以轉變為需要我們去求出最長真公升序子字串,即公升序子字串的相鄰元素之間相差1。比如3 2 1 4 6 5,排完序後:1 2 3 4 5 6,對比兩個子字串,發現原字串3 4 5排完序相對位置沒變,所以3 4 5即為原字串的最長真公升序字元陣列。找到最長真公升序字元陣列後,剩下有多少個其他字元就應該挪動多少次。

**:

#include

using

namespace std;

intmain()

for(

int i =

0; i < n;

++i)}if

(num > max)

num =1;

} cout<< n - max;

return0;

}

浪潮筆試c 石頭

沙灘按照線型擺放著n個大小不一樣的球形石頭,已知第i 個石頭的半徑為n,且不存在兩個石頭有相同的半徑。為了使石頭的擺放更加美觀,現要求擺放的石頭的半徑從左往右一次遞減。因此,需要對一些石頭進行移動,每次操作可以選擇乙個石頭,並把它放在剩下n 1個石頭在最左邊或最右邊。問最少需要操作多少次才能將這n個...

浪潮2020筆試 搬石頭,01串

沙灘按照線型擺放著n個大小不一的球形石頭,已知第i個石頭的半徑為ri,且不存在兩個石頭有相同的半徑。為了使石頭的擺放更加美觀,現要求擺放的石頭的半徑從左往右依次遞增。因此,需要對一些石頭進行移動,每次操作可以選擇乙個石頭,並把它放在剩下n 1個石頭在最左邊或最右邊。問最少需要操作多少次才能將這n個石...

浪潮筆試題

1.在計算機中,最適合進行數字加減運算的數字編碼是 最適合表示浮點數階碼的數字編碼是 2.如果主存容量為16m位元組,且按位元組編址,表示該主存位址至少應需要 位。3.中斷響應時間是指 從發出中斷請求到進入中斷處理所用的時間 4.表示式a b c d的字尾表達形式為 5.若二叉樹的先序遍歷序列為ab...