我得到了一个“损坏的算法”来修复。它适用于“猜 1-100 之间的数字”游戏,计算机在 7 个问题/迭代内回答。
我得到的简短建议只需要对算法进行最小的更改,抱歉,如果这含糊不清,我也在想同样的事情。
无论如何,该算法充满了我已经清理的愚蠢错误。对于 33 的测试用例,算法分配以下中位数
50,25,37,19 << 19 显然是不正确的。
我知道 last_median = 当前中位数不在正确的位置。这是漫长的一天,如果有人能对此有所了解,我将不胜感激。
const int MAX_VALUE = 100;
int current_median = MAX_VALUE /2;
int last_median = 0;
while (true)
{
last_median = current_median;
if(number >= current_median)
{
if(number == current_median)
{
//Check for equality
cout << endl << number << endl;
break;
}
current_median += last_median /2;
}
else if(number <= current_median)
{
if(number == current_median)
{
// Check for equality
cout<<endl<<number<<endl;
break;
}
current_median -= last_median /2;
}
}