2013-03-22 103 views
-2

可以有20輛車最大的user.I有5個靜態forms.Based用戶選擇我要合併的PDF文件選擇形式

次數1.pdf - 1輛,2。 pdf - 2 veh,3.pdf - 3 veh,4.pdf - 4 veh,5.df - 5 veh

如果用戶有6輛以上的車輛超過5輛,那麼每個車型都應該包含5.pdf + 1 .pdf不是其他組合,如3 + 3或2 + 3 + 1等。 20車輛5 + 5 + 5 + 5,13車輛5 + 5 + 3,7車輛5 + 2,18車輛5 + 5 + 5 + 3,3 veh 3.任何人都可以幫助我選擇合適的邏輯來選擇用戶應該選擇合併而不是寫入20循環。

回答

1

首先要注意的是,一捆表格將是一個單一的表格1-5,或者是一些5個表格和一個單一的表格1-5。將不會有其他組合。這基本上就像你在以5爲基數計算表格。

首先,根據需要照顧儘可能多的5.pdf表格。如果表單數量大於5,則至少需要添加1個5.pdf文件。如果表格數量大於10,則至少需要添加2個5.pdf文件。你能做到這一點,除其他方式,不斷加入5.pdf形式,直到你的計數小於5

僞代碼,你可以做到以下幾點:

List forms = new ArrayList(); 
int count = <number of vehicles> 

while count > 0 { 
    if (count >= 5) { 
     forms.add("5.pdf"); 
     count = count - 5; 
    } else { 
     forms.add("" + count + ".pdf"); 
     count = 0; 
    } 
} 

<forms now contains the list of all forms you need> 

或者,如果你願意,你如下可以簡化它:

int numberOfFives = (formsCount/5); // Integer division, so if formsCount = 4, numberOfFives = 0 
int remainingForm = (formsCount % 5); // Remainder after division by 5 

然後你要補充numberOfFives 5.pdf形式和單一remainingForm .pdf格式到您的級聯PDF。

+0

感謝您的回覆。 pdf名稱不是1.pdf,2.pdf,3.pdf,4.pdf,5.pdf.they就像a.pdf,b.pdf,c.pdf,d.pdf,e.pdf – 2013-03-22 17:42:27

+0

if pdf名字是不同的,因爲我以上mentoioned。請告訴我。 – 2013-03-22 17:48:13

+0

然後,您只需要從編號到PDF的名稱進行映射即可。這可以通過多種方式完成,從java.util.Map到XML文件或其他任何方式。 – 2013-03-22 18:26:34

0

它看起來像你會想要重複減去小於我們等於目標的最大值。例如:

8: greatest is 5, 8-5=3 
3: greatest is 3, 3-3=0, we're finished 
8=5+3