百度2017春招筆試的部分程式設計題

2021-08-09 00:09:18 字數 1962 閱讀 7727

博主今天分享一下

部分程式設計題

first:top3問題

度度熊想去商場買一頂帽子,商場裡有n頂帽子,有些帽子的**可能相同。度度熊想買一頂**第三便宜的帽子,問第三便宜的帽子**是多少?

思路解析

這是乙個典型的topk問題,利用stl庫中的順序表接收n頂帽子的**,再利用選擇排序的思維,從小到大排到第三個就結束,即得到第三便宜的帽子了。

**實現

#includeusing namespace std;

#includeint thethree(int n,vectorstr)

vectorstr;

while(str.size()>k;

str.push_back(k);

}cout<

second:度度回家

乙個數軸上共有n個點,第乙個點的座標是度度熊現在位置,第n-1個點是度度熊的家。現在他需要依次的從0號座標走到n-1號座標。

但是除了0號座標和n-1號座標,他可以在其餘的n-2個座標中選出乙個點,並直接將這個點忽略掉,問度度熊回家至少走多少距離?

思路解析

當n<2,則預設回家距離為0;

當n==2,則回家距離為0號和1號差值的絕對值;(與下面的情況可歸為一類,此忽略點為-1,忽略長度為0)

當n>2,需要計算忽略點和n個點之間的總距離。

記錄忽略點的下標,和當前忽略點的差值,

忽略差值=忽略掉max點後的距離-忽略點與前乙個點和後乙個點的距離之和。

計算除0號座標和n-1號座標外其他點的忽略差值,並找出忽略差值最大的下標即忽略點,並記錄忽略差值。

最後回家距離=總距離+忽略點差值(忽略掉max點後的距離-max與前乙個點和後乙個點的距離之和)。

**實現

#includeusing namespace std;

#include#include#includeint lessnum(int n, vectorstr)

cout<

third:有趣的排序

度度熊有乙個n個數的陣列,他想將陣列從小到大 排好序,但是萌萌的度度熊只會下面這個操作:

任取陣列中的乙個數然後將它放置在陣列的最後乙個位置。

問最少操作多少次可以使得陣列從小到大有序?

思路解析

這道題很簡單,並不一是真的要把陣列從小到大排好序,只要把排序的最小運算元算出來就好了,其實就是找到當前陣列中亂序的最小值的下標,再計算陣列中值比它大的個數就是最小運算元。

**實現

//有趣的排序

#includeusing namespace std;

#includeint minoperation(int n, vectorstr)

int k=str[min+1];

for(int i=0; ik)

min=i;

}if(min==-1) return 0;//亂序不存在,陣列不需要移動

int num=1;//亂序最小值存在,需要移動+1

for(int i=0; istr[min])//所有比亂序最小值大的都需要移動

num++;

}return num;}

int main()

cout<

如果以上有錯誤,希望大家指正,願共同進步,程式設計讓人快樂,學習讓人成長。

百度2017春招筆試真題

好久不寫題,dp 都這麼生疏了,想不到複雜度合適的dp 度度熊想去商場買一頂帽子,商場裡有n頂帽子,有些帽子的 可能相同。度度熊想買一頂 第三便宜的帽子,問第三便宜的帽子 是多少?直接將所有 存入se t 中,然後輸出第三小的即可。剛開始沒注意不能相等,直接排序輸出,結果沒ac 仔細看樣例後就能理解...

百度2017春招筆試真題程式設計題集合

程式設計題 買帽子 時間限制 1秒 空間限制 32768k 度度熊想去商場買一頂帽子,商場裡有n頂帽子,有些帽子的 可能相同。度度熊想買一頂 第三便宜的帽子,問第三便宜的帽子 是多少?輸入描述 首先輸入乙個正整數n n 50 接下來輸入n個數表示每頂帽子的 均是正整數,且小於等於1000 輸出描述 ...

百度2017春招筆試真題程式設計題集合 2

題目 乙個數軸上共有n個點,第乙個點的座標是度度熊現在位置,第n 1個點是度度熊的家。現在他需要依次的從0號座標走到n 1號座標。但是除了0號座標和n 1號座標,他可以在其餘的n 2個座標中選出乙個點,並直接將這個點忽略掉,問度度熊回家至少走多少距離?以下是原始碼 include include i...