2014-04-13 34 views
0

当我设置一个固定值时,如何为某些东西写伪代码,并且用户输入猜测值是什么,但他们的赢家是接近我的固定值而没有超过的值?有点像二十一点?伪代码中的算法用于查找不大于固定值的最接近的值?

不知道如何去做这件事。

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

我会用Java编写它。

回答

0

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

在巨蟒式的伪

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 
0

您可以:

  • 根据差别的从目标值的绝对值创建猜测的名单
  • 排序猜测
  • 第一个元素就是你的赢家

要对列表进行排序,请使用Collections.sort()Comparator来区分。

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中这项工作应该是一件容易的事。

相关问题