伪代码中的算法用于查找不大于固定值的最接近的值?
问题描述:
当我设置一个固定值时,如何为某些东西写伪代码,并且用户输入猜测值是什么,但他们的赢家是接近我的固定值而没有超过的值?有点像二十一点?伪代码中的算法用于查找不大于固定值的最接近的值?
不知道如何去做这件事。
例如:如果我的固定值是33.65,猜测值是32.90,21.12,33.68,32.00那么获胜者将是32.90。
我会用Java编写它。
答
按递增顺序对数组进行排序,然后向后遍历数组。返回小于或等于固定值的第一个值。
在巨蟒式的伪
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
答
您可以:
- 根据差别的从目标值的绝对值创建猜测的名单
- 排序猜测
- 第一个元素就是你的赢家
要对列表进行排序,请使用Collections.sort()
和Comparator
来区分。
答
按照其他人的建议排序是一种获得答案的方法,但如果您不需要按排序顺序进行猜测,则这种方法相对昂贵。
在基于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中这项工作应该是一件容易的事。