天平秤重問題

2021-08-26 18:52:51 字數 1417 閱讀 4703

[問題描述]:

有乙隻天平和n只砝碼,如何設計這n只砝碼,才能使這天平能夠連續秤出的重量最大?假設砝碼的最小單位為1克,秤物時物品放在天平的左邊,砝碼可以放在右邊也可以放在左邊,不管放在哪一邊只要天平能夠平衡就行,物品的重量應是右邊砝碼總重量減去左邊砝碼的重量。

輸入乙個物品的重量,輸出其秤重方案。

[分析與演算法選擇]:

這個問題是從乙個經典的數學問題變化而來,這個數學問題的大意是:乙個物體重40磅,掉在地上後摔成四片,這四片恰好能夠作為砝碼連續秤出40磅以內的物品的重量,這四片的重量如何?

(1)如何設計砝碼?

我們先不去看單位,直接用數字來描述。因為要能連續秤出一範圍內的值,所以首先要有1,從數學上可以知道,n只砝碼本身最大能秤的總重就是這n只砝碼的重量和,下面就看如何保證連續的數都能秤出了。設這n只砝碼的重量分別為w1、w2……wn,且有w1<=w2<=……<=wn, w1=1,下面看w2如何設計。

如果w2=1,1、2都能秤出;如果w2=2,1、2、3都能秤出;如果w2=3,1可以秤出(w1)、2可以秤出(w2-w1)、3可以秤出(w2)、4也可以秤出(w1+w2);如果w2=4,則2不能秤出;所以w2最大為3(=3*w1)。

同理可推出w3最大為9(=3*w2);

……wn最大為3n-1(=3*wn-1)。

設計方案為這n只砝碼重分別為:1、3、9、27、……、3n-1。

(2)如何根據物品重量得到秤重方案?

物品(+砝碼) 砝碼

因為物品固定放在一連(如左邊),只要考慮砝碼放的情況。任乙個砝碼都可能有三種狀態:一是跟被秤物品放在一起(如左邊),二是不放,三是放在物品另一邊(如右邊)。最後物品的重量等於所有砝碼乘上相應係數的和。這個係數可能是:-1、0、1。

先來看3只砝碼時各種重量的稱法,如下表所示,其中-1表示砝碼放在物品一邊、0表示砝碼不放進天平、1表示砝碼放在物品另一邊,如果每一位加1後便只會是0、1、2這3個數字中的乙個,所以可以方便地跟三進製數對應起來:

物品重量

3只砝碼

每一位加1

三進製數

十進位制數

14(=1+13)

-115(=2+13)

16(=3+13)

17(=4+13)

-1-1

18(=5+13)

-119(=6+13)

-120(=7+13)

-121(=8+13)

22(=9+13)

23(=10+13)

-124(=11+13)

25(=12+13)

26(=13+13)

由上表我們可以總結出這樣的計算方法:對於給定的物品重量,先確定它最多用到多大的砝碼,假定是3n-1,那麼先將這個物品的重量加上1、3、……3n-1,得到乙個數,再對這個數進行除3取餘運算,當餘數為0時表示相應的砝碼跟物品放在一起,餘數為1時表示相應的砝碼不放,為2時表示放在物品的另一邊。

(演算法)天平問題

我們用乙個等臂天平來稱物體的質量,如果我們要稱的物體質量範圍在1到40克 整數 請問我們最少需要幾塊砝碼可以完成這項物體質量的稱量?將上述問題轉換為乙個數學問題,即通過什麼樣的數字組合來表示某個範圍整數。具體到題目,就是怎麼樣來表示1到40,可以很快想到我們表示整數的方法,二進位制 十進位制等等。那...

DP地獄訓練 砝碼秤重

時間限制 1 sec 記憶體限制 64 mb 提交 610 解決 270 提交 狀態 討論版 設有n種砝碼,第k種砝碼有ck個,每個重量均為wk,求 用這些砝碼能秤出的不同重量的個數,但不包括乙個砝碼也不用的情況。輸入的第一行只有乙個數n,表示不同的砝碼的種類數.第2行至第n 1行,每行有兩個整數....

洛谷 1441 砝碼秤重

題意概述 現有n個砝碼,重量分別為a1,a2,a3,an,在去掉m個砝碼後,問最多能稱量出多少不同的重量 不包括0 題解 先dfs決定用哪些砝碼,然後dp求可以稱出的重量有多少種 1 include2 include3 include4 using namespace std 5const int ...