-2

一个用户最多可以有 20 辆车。我有 5 个静态表格。根据用户选择,我想合并 pdf

1.pdf - 1 辆汽车,2.pdf - 2 辆汽车,3.pdf - 3 辆汽车, 4.pdf - 4 辆汽车, 5.df - 5 辆汽车

如果用户拥有超过 5 辆汽车,例如 6 辆汽车,那么每个表格都应容纳 5.pdf+1.pdf 而非 3+3 或 2+3+1 等其他组合。 20 辆汽车 5+5+5+5,13 车辆 5 +5+3,7 veh 5+2,18 veh 5+5+5+3,3 veh 3. 任何人都可以帮我制定一个逻辑来选择用户应该选择合并哪些表单而不是编写 20 个 if 循环.

4

2 回答 2

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

然后您将numberOfFives5.pdf 表单和一个remainingForm.pdf 表单添加到您的级联 PDF。

于 2013-03-22T17:33:28.213 回答
0

看起来您需要反复减去小于等于目标的最大值。例如:

8: greatest is 5, 8-5=3
3: greatest is 3, 3-3=0, we're finished
8=5+3
于 2013-03-22T17:31:57.803 回答