伪代码中的算法用于找到不大于固定值的最接近的值?

时间:2014-04-13 21:01:17

标签: algorithm fixed blackjack

当我设置固定值时,如何为某些东西编写伪代码,并且用户输入关于值是什么的猜测,但是他们的赢家是接近我的固定值的值而没有经过?有点像二十一点吗?

不知道如何解决这个问题。

例如:如果我的固定值是33.65并且猜测是32.90,21.12,33.68,32.00那么获胜者将是32.90。

我将用Java编写这个代码。

3 个答案:

答案 0 :(得分:0)

按递增顺序对数组进行排序,然后向后遍历数组。返回小于或等于固定值的第一个值。

在python-esque伪代码中

fixed_value = 4
arr = [9, 4, 5, 6, 3, 7, 8, 1, 2]

sort(arr)
>>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for value in arr:
    if value <= fixed_value:
        return value
>>> 4

答案 1 :(得分:0)

你可以:

  • 创建一个猜测列表
  • 根据与目标值
  • 的差异的绝对值对猜测进行排序
  • 第一个元素就是你的赢家

要对列表进行排序,请根据差异使用Collections.sort()Comparator

答案 2 :(得分:0)

按其他人的建议排序是一种获得答案的方法,但如果您不需要按排序顺序进行猜测,这是一种相对昂贵的方式。

在基于C的伪代码中:

float answer = 33.65;
float guess[4] = {32.90, 21.12, 33.68, 32.00};
float best_guess = -1.0; /* none! */
float smallest_difference = answer; /* start out large! */
int num_guesses = 4;

for (int i = 0; i < num_guesses; i++) {
    float difference = answer - guess;
    if (difference < 0) continue; /* on to the next guess */
    if (difference < smallest_difference) {
        best_guess = guess;
        smallest_difference = answer - guess);
    }
}

printf("The best guess was %f\n", best_guess);

使用Java进行这项工作应该是一项微不足道的工作。