【问题标题】:Algorithm in pseudocode for finding the closest value that's not greater than a fixed value?用于查找不大于固定值的最接近值的伪代码算法?
【发布时间】:2014-05-27 17:21:29
【问题描述】:

当我设置一个固定值并且用户输入猜测该值是什么但他们的获胜者是接近我的固定值而不会超过的值时,我该如何编写伪代码?有点像二十一点?

不知道该怎么做。

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

我将用 Java 编写代码。

【问题讨论】:

    标签: algorithm fixed blackjack


    【解决方案1】:

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

    在 python 式的伪代码中

    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
    

    【讨论】:

      【解决方案2】:

      你可以:

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

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

      【讨论】:

        【解决方案3】:

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

        在基于 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 中完成这项工作应该是一项微不足道的练习。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-25
          • 1970-01-01
          • 2012-09-08
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多