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

2021-08-09 08:07:07 字數 4064 閱讀 8513

[程式設計題] 買帽子

時間限制:1秒

空間限制:32768k

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

輸入描述:

首先輸入乙個正整數n(n <= 50),接下來輸入n個數表示每頂帽子的**(**均是正整數,且小於等於1000)
輸出描述:

如果存在第三便宜的帽子,請輸出這個**是多少,否則輸出-1
輸入例子1:

10

10 10 10 10 20 20 30 30 40 40

輸出例子1:

30
#include#include#include#include#include#include#include#include#include#includeusing namespace std;

int a[55]=;

int main()

sort(a,a+n);

int cnt=0;

for(int i=0;i[程式設計題] 度度熊回家

時間限制:1秒

空間限制:32768k

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

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

輸入描述:

輸入乙個正整數n, n <= 50。

接下來n個整數表示座標,正數表示x軸的正方向,負數表示x軸的負方向。絕對值小於等於100

輸出描述:

輸出乙個整數表示度度熊最少需要走的距離。
輸入例子1:

4

1 4 -1 3

輸出例子1:

4
#include#include#include#include#include#include#include#include#include#includeusing namespace std;

int n;

int a[55]=;

int main()

int sum=0;

for(int i=0;i[程式設計題] 尋找三角形

時間限制:1秒

空間限制:32768k

三維空間中有n個點,每個點可能是三種顏色的其中之一,三種顏色分別是紅綠藍,分別用'r', 'g', 'b'表示。 

現在要找出三個點,並組成乙個三角形,使得這個三角形的面積最大。

但是三角形必須滿足:三個點的顏色要麼全部相同,要麼全部不同。 

輸入描述:

首先輸入乙個正整數n三維座標系內的點的個數.(n <= 50)

接下來n行,每一行輸入 c x y z,c為'r', 'g', 'b' 的其中乙個。x,y,z是該點的座標。(座標均是0到999之間的整數)

輸出描述:

輸出乙個數表示最大的三角形面積,保留5位小數。
輸入例子1:

5

r 0 0 0

r 0 4 0

r 0 0 3

g 92 14 7

g 12 16 8

輸出例子1:

6.00000
#include#include#include#include#include#include#include#include#include#includeusing namespace std;

struct node

;node q1[55];

node q2[55];

node q3[55];

int c1=0,c2=0,c3=0;

double s(node&a,node&b,node&c)

int main()

if(c=='g')

if(c=='b')

}double max=0;

for(int i=0;i[程式設計題] 有趣的排序

時間限制:1秒

空間限制:32768k

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

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

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

輸入描述:

首先輸入乙個正整數n,接下來的一行輸入n個整數。(n <= 50, 每個數的絕對值小於等於1000)

輸出描述:

輸出乙個整數表示最少的操作次數。
輸入例子1:

4

19 7 8 25

輸出例子1:

2
基本想法: 如果從最小的數開始,後面的數是有序的,那麼就不必移動,否則應該把大的數移到後面去。

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

int n;

int a[55]=;

mapm;

int main()

sort(a,a+n);

int tmp=n,cnt=0;

for(int i=0;im[a[i+1]])

}cout<[程式設計題] 不等式數列

時間限制:1秒

空間限制:32768k

度度熊最近對全排列特別感興趣,對於1到n的乙個排列,度度熊發現可以在中間根據大小關係插入合適的大於和小於符號(即 '>' 和 '<' )使其成為乙個合法的不等式數列。但是現在度度熊手中只有k個小於符號即('<'')和n-k-1個大於符號(即'>'),度度熊想知道對於1至n任意的排列中有多少個排列可以使用這些符號使其為合法的不等式數列。 

輸入描述:

輸入包括一行,包含兩個整數n和k(k < n ≤ 1000)

輸出描述:

輸出滿足條件的排列數,答案對2017取模。
輸入例子1:

5 2
輸出例子1:

66
動規思想:dp[i][j]表示在i個數的排序中有j個小於號的序列數目。

想象在i-1個數的序列的基礎上加上i這個數。

如果加在最左邊,相當於多了乙個大於號,於是之前的i-1個數有dp[i-1][j]種。

如果加在最右邊,想當於多了乙個小於號,有dp[i-1][j-1]種。

如果加在乙個大於號中間,相當於多了乙個小於號,有dp[i-1][j-1]種,而之前大於號有(i-1-j)個,所以總共有(i-j-1)*dp[i-1][j-1]種。

如果加在乙個小於號中間,相當於多了乙個大於號,有dp[i-1][j]種,而之前小於號有j個,所以總共有j*dp[i-1][j]種。

以上四種情況想加得:dp[i][j]=(j+1)*dp[i-1][j]+(i-j)*dp[i-1][j-1] 

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

int dp[1005][1005];

int n,k;

int main()

for(int i=2;i<=n;++i)

}cout<} return 0;

}

百度2017春招筆試真題

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

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

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

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

題目 三維空間中有n個點,每個點可能是三種顏色的其中之一,三種顏色分別是紅綠藍,分別用 r g b 表示。現在要找出三個點,並組成乙個三角形,使得這個三角形的面積最大。但是三角形必須滿足 三個點的顏色要麼全部相同,要麼全部不同。以下是通過測試的原始碼 求三角形面積部分模仿 deeebug 已知三維空...