題目要求:
給定車子每次運送物體的最大質量,現將一堆石頭從起點運到目的地,使得車子運送的趟數最少。輸入資料第一行是車子的容量,第二行是石頭的數量,第三行是每個石頭的重量,例如:
10(車子單趟最大載重量)
9(石頭數量)
1 3 5 7 9 10 8 6 4(每個石頭的重量)
10 10 10 10 10
輸出:題目分析:
我們先將這些石頭的重量全部相加,就像示例sum=53,
每趟車子最大的載重量為
10個單位,那麼車子運送趟數t在
[(sum/load),n]
之間,其中
load
為車子的最大載重量,
sum為所有需要運送石頭的重量之和,
n為需要運送的石頭的個數,
(sum/load)
表示將它們的商向上取整。對於每次運送,我們採用貪心策略,每次選取和當前可容納質量最相近且不超過當前可容納質量的石頭裝入。
**:
#include#include#include#include#include#include#include#includeusing namespace std;
class solution
load.clear();
flag.clear();
sum = 0;
for (int i = 0; i < num; i++)
cout << "total weight of the stones is :"<> capacity;
cout << "number of stones:";
cin >> num;
} return 0;
}
測試結果:
目前想到的最好的解決方法為貪心演算法,可能還有其他比較好的演算法(持續更新中),歡迎討論!!!!!!
牛客演算法周周練2
a 題意 求乙個數的順序和逆序之和。題解 其實就是個閹割版的高精度加法嘛。其實逆序數忽略前導零這個條件是沒有用的,因為順序數不可能有前導零,自然結果也不會有,然後注意下首位進製不取餘。include using namespace std int a 10 b 10 intmain for k j ...
牛客演算法周周練2
題目鏈結 include define sc x scanf lld x define pf printf define rep i,s,e for int i s i e i define dep i,e,s for int i e i s i using namespace std typede...
牛客演算法周周練3
只寫了乙個,打遊戲去了 就是個搜尋模板,直接寫就行 include include include include include include using namespace std define mid 1000000007 typedef long long ll int book 106 ...