博主今天分享一下
部分程式設計題
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...