獨木舟上的旅行

2021-08-13 16:50:40 字數 1264 閱讀 8934

實踐題目

1225: 獨木舟上的旅行

2、問題描述

進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫乙個程式,讀入獨木舟的最大承載量、旅客數目和每位旅客的重量。根據給出的規則,計算要安置所有旅客必須的最少的獨木舟條數,並輸出結果。

input

第一行包括兩個整數w,n,80<=w<=200,1<=n<=300,w為一條獨木舟的最大承載量,n為人數;

接下來的一組資料為每個人的重量(不能大於船的承載量);

output

輸出所需要的最少獨木舟的條數。

sample input

85 6

5 84 85 80 84 83

sample output

53、演算法描述

先用乙個陣列存放輸入的每個人的體重,然將陣列公升序排列,由於一條獨木舟最多只能坐下兩個人,而且我們目前需要輸出的是最少獨木舟的條數,因此考慮如果不超過獨木舟的最大承載量,將重量最大以及重量最小的人放到同一條獨木舟上;分別用i,j指向重量最小以及重量最大的人的重量,用count記錄獨木舟的條數。當ij,則退出迴圈。

**:

#include #include using namespace std;

int main()

//排序之後取乙個最大的和乙個最小的放到一條船上,這樣分配最均勻,不會造成資源浪費

sort(people,people+n);

// begin,end 從頭和從尾開始的下標,number記錄當前多少船

int begin = 0, end = n-1,number = 0;

while(true)

if(begin+1==end)else

}//最輕和最重如果可以承受就上船

if(people[begin] + people[end] <= w)else

}printf("%d",number);

}

4、演算法時間及空間複雜度分析

快排一遍的時間複雜度是o(nlogn),然後從頭向尾和從尾向頭遍歷一邊的時間複雜度是o(n),所以這題的時間複雜度是o(nlogn)。

因為空間複雜度跟陣列大小有關,因此空間複雜度為o(n)。

5、程式執行截圖

獨木舟上的旅行

獨木舟上的旅行 時間限制 3000 ms 記憶體限制 65535kb 難度 2 描述 進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數...

獨木舟上的旅行

難度 2 描述進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫乙個程式,讀入獨木舟的最大承載量 旅客數目和每位旅客的重量。根...

獨木舟上的旅行

描述 進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫乙個程式,讀入獨木舟的最大承載量 旅客數目和每位旅客的重量。根據給出的...