[英]Given a fixed length int array, find the lowest number, and then add and return the sum of the remaining numbers
這不是功課。 我正在設計一個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;
我會這樣做-不需要數組並在循環內計算總和:
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);
}
您可以按照此處的說明使用Java的排序機制
排序后,然后刪除最低的元素,並將其余的數組加在一起。
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;
差別不大,但競爭激烈
這是我刪除最低卷的解決方案:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.