Если задан массив int фиксированной длины, найдите наименьшее число, а затем добавьте и верните сумму оставшихся чисел. - PullRequest
1 голос
/ 25 марта 2011

Это не домашняя работа. Я проектирую RPG, и для оценки способностей я бросаю 4d6, убираю самый низкий бросок, а затем добавляю оставшуюся сумму. То, что у меня есть, ниже, и мне было просто любопытно, есть ли у кого-нибудь еще лучшие предложения. Для краткости я убрал действия броска и просто включил четыре целых числа.

int[] rolls = { 6, 3, 2, 5 };
int abilityScore = rolls[0] + rolls[1] + rolls[2] + rolls[3];
int low = rolls[0];

for (int i = 1; i < rolls.length; i++)
{
    if (rolls[i] < low)
    {
        low = rolls[i];
    }
}

return abilityScore -= low;

Ответы [ 4 ]

5 голосов
/ 25 марта 2011

Я бы сделал это так - массив не нужен и сумма в цикле вычисляется:

int get_total_without_lowest_roll(int roll_count) {
  int abilityScore = 0;
  int low = MAX_INTEGER;
  int roll;
  for (int i = 0; i < roll_count; i++)
  {
    roll = roll_dice(); // Roll your dice here
    if (roll < low)
    {
        low = roll;     
    } // By the way, good alternative would be low = min(low,roll);
    abilityScore += roll;
  }

  return (abilityScore - low);
}
1 голос
/ 25 марта 2011

вы можете использовать механизмы сортировки Java, как объяснено здесь

После сортировки удалите самый нижний элемент и добавьте остаток массива вместе.

0 голосов
/ 14 февраля 2017

Это было мое решение убрать самый низкий рулон:

    static void removeLowest(ref List<int> rolls)
    {
        int lowest = 0;
        for (int i = 1; i < rolls.Count; i++)
            if (rolls[i] < rolls[lowest])
                lowest = i;
        rolls.RemoveAt(lowest);
    }
0 голосов
/ 25 марта 2011
int[] rolls = { 6, 3, 2, 5 };
int abilityScore = 0
int low = MAX_INTEGER;

for (int i = 1; i < rolls.length; i++)
{    
    total+=rolls[i];
    if (rolls[i] < low)    
        low = rolls[i];

}

return abilityScore -= low;

не слишком отличается, но динамично конкурирует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...