如何使用特定算法设置数组的元素?

时间:2016-11-17 03:13:14

标签: java arrays loops for-loop

  

generatePrizes根据乐透签的大小和总奖金数创建一系列奖金额。数组位置对应于乐透选区中正确数字的数量(零到大小,包括在内)。

     

用于产生奖金的算法如下。如果玩家正确猜出0,1或2个数字,则奖金金额为0.剩余的奖金是通过奖励到每个级别(从正确猜测所有数字开始)3/4的可用奖金生成的,舍入到最近的美元,最后一个计数(3个正确)收到任何遗骸。例如,如果抽奖是6个数字而奖金数是1000,那么6个正确将获得750,5个正确将获得3/4的剩余数或188个,4个正确将获得3/4个剩余部分或47个,并且3个正确如果只有3个数字和500个奖金,3个匹配的数字将获得全部500个。请注意,返回值(奖品)数组长度将比彩票中的数字数量多一个(因为它必须包括零和大小的奖品。

我似乎无法弄清楚如何使这种方法按照我想象的方式工作。我已经尝试了下面的代码,但它只是用相同的数字填充每个元素,我该如何改变它?

public static int[] generatePrizes(int size, int prizeMoney) {
 int[] prizes = new int[size + 1];
 int remainder = 0;
 for (int i = 0; i < 2; i++) {
   prizes[i] = 0;
 }
 for (int j = size; j > 2; j--) {
   prizes[j] = (int)Math.round(prizeMoney * .75);
 }


   return prizes;
 }

1 个答案:

答案 0 :(得分:1)

    public static int[] generatePrizes(int size, int prizeMoney) {
     int[] prizes = new int[size + 1];
     int remainder = prizemoney;
     int lottery = prizeMoney ;
     for (int j = size; j > 3; j--) {
       prizes[j] = lottery ;
       remainder=  remainder - prizes[j];
       lottery = (int)Math.round(remainder* .75);
     }
     for (int k = 3; k >= 0; k--) {
         prizes[k] = remainder;
         remainder = 0;
     }
   return prizes;
 }

这应该解决。你没有更新剩余的奖金额。