用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。
如果有無限個砝碼,重量分別是1,3,9,27,81,……等3的指數冪,
神奇之處在於用它們可以稱出任意整數重量(砝碼允許放在左右兩個盤中)。
本題目要求程式設計實現:對使用者給定的重量,給出砝碼組合方案。
使用者輸入:
程式輸出:
9-3-1
使用者輸入:
程式輸出:
27-9+1
要求程式輸出的組合總是大數在前小數在後。
可以假設使用者的輸入的數字符合範圍1~121。
1, 3, 9, 27, 81,……
30,31,32,33,34,……
聯想到用3進製解決問題。
假設是二進位制:
1,2,4,8,……
假設要稱重量為10的物品,10轉換為二進位制是1010,代表取2和8兩個砝碼就能稱出10,11轉換為二進位制是1011,代表取1、2和8三個砝碼就能稱出11,……
如果把5轉換為3進製為12,1代表要取乙個重量為3的砝碼,2代表要取兩個重量為1的砝碼,但是題目中並沒有說可以用多個砝碼。
如果把5轉換為變種3進製可以表示為(2,-1)3=(1,-1,-1)3,這樣就能夠表示為題目中給出的9-3-1。
二進位制代表了兩種狀態,取或不取,但是三進製代表了三種狀態,放在左盤、不取、放在右盤。
對於要稱重的數,先轉換為3進製 ,然後翻轉(放置越界),之後轉成字元陣列,掃瞄;如果遇到2就將其自己變成-1,下一位+1;如果遇到22的情況就將2變成-1,下一位變成0,後面一位+1;最後,恢復成10進製。
數學 巧用進製
用天平稱重時,我們希望用盡可能少的砝碼組合稱出盡可能多的重量。如果有無限個砝碼,重量分別是1,3,9,27,81,等3的指數冪,神奇之處在於用它們可以稱出任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案。使用者輸入 程式輸出 9 3 1 使用者輸入...
巧用進製解「天秤」問題 演算法筆記
每個砝碼只能用一次!思想 利用進製轉換寫,先把所給的數轉換成3進製,再轉換成字串,逆轉 這樣從左到右就是位數從低到高,數值是1就不管,是2就往上進一位,並將此位記為 1,1表示待會放在 左邊砝碼 是3就往上進一位,並將此位記為0 將數 n 轉換成 3 進製字串 且把三進製數翻轉過來了。return ...
巧用進製解決天平稱問題《演算法很美》
用天平稱重時,我們希望佣金可能少的砝碼組合稱出盡可能多的重量。如果有無限個砝碼,但它們的重量分別是1,3,9,27,81,等3的指數冪神奇之處在於用它們的組合可以稱出任意整數重量 砝碼允許放在左右兩個盤中 本題目要求程式設計實現 對使用者給定的重量,給出砝碼組合方案,重量 1000000。例如 使用...