記一次拆分包裹的演算法

2021-09-08 04:54:45 字數 711 閱讀 4458

由於公司銷售的商品從生產廠家拿過來的時候都是成箱裝的,規格如下:大包裝50個,中包裝30個,小包裝10個。而使用者購買的時候,數量可能是70個、60個或5個這種資料 ,於是就有了拆包的需求。

首先我們要怎麼拆才能盡量避免不拆箱呢?原則上來講,優先計算大包裝,最後小包裝,也就是說,從大到小的去拆包。

例如使用者購買了80個,可以拆為50*1+30*1+10*0 ,如果使用者購買的數量是62個呢?則可以拆成50*1+30*0+10*1+1*2。

了解怎麼拆之後,就開始寫**咯,從上面的分析中,我們可以看出來,實際上的演算法,就是用:(購買數量-(購買數量%包裝單位))/ 包裝單位 ,直到包裝裝位為1為止,

下面不廢話了,直接寫核心**:

public class main 

public static void main(string args)

public static void splitpack(int count, listlist) else

}map.entryset().foreach(x -> system.out.println(x.getkey() + "=" + x.getvalue()));

}}

輸出結果:

50=1

30=0

10=1

1=2即50個一箱的,有1個,30個一箱的有0個,10個一箱的有1個,單個包裝的有2個。

mysql 拆分 記一次MySql的資料拆分

前言 早上上班的時候,查詢資料突然發現比較慢,於是去檢視資料庫,結果發現表資料已經達到了千萬級別,於是就準備拆分一下資料表.思路由於資料表 table one 資料非常龐大,並且線上業務也在不定時的往表裡寫入資料,所以這裡不會考慮資料遷移.這裡採用的方式為資料分類 歷史冷資料 和 近期熱資料 通過一...

記一次的使用

將jsp拆分frame框架,因為採用了第一種方式,一直在考慮用jquery非同步請求獲取資料,總是但不到效果,終於在js寫吐的時候選擇了第二種方式。參考網上的使用,大多是下面這個樣子,如果涉及靜態頁面之間定位,是沒有問題的 href 為目標頁面 通過target定位到frame views main...

記一次除錯

這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...