修正する「壊れたアルゴリズム」が与えられました。これは、「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;
}
}