如何解决使用 C# 创建猜谜游戏的二分搜索
我是 C# 初学者:
我需要使用二分查找来让计算机猜测用户的“幻数”5x。我知道我的 if
语句有缺陷,但我很难将二进制搜索转换为代码。
用户在头脑中选择数字,计算机只允许 5 次机会猜测用户的数字。如果计算机猜测的数字小于用户的幻数,则用户选择 1,如果计算机猜测的数字大于用户的幻数,则选择 2,如果计算机猜对,则选择 3。
以下是我目前所拥有的。
using System;
namespace NumberGuessingGame
{
class Program
{
static void Main(string[] args)
{
int Low = 1;
int High = 100;
int DifferenceOfRange = High - Low;
int Midpoint = DifferenceOfRange / 2;
int MidValue = Low + Midpoint;
int Count = 0;
bool MagicNumber = true;
Console.WriteLine("Pick a magic number between 1 to 100. Press enter to continue");
Console.ReadKey();
Console.WriteLine("Is your magic number: {0}",MidValue);
Console.WriteLine(" 1: No my magic number is lower \n 2: No my magic number is greater \n 3: That is my magic number! ");
if (int.Parse(Console.ReadLine()) == 3)
{
Console.WriteLine("Computer Wins!");
MagicNumber = false;
}
while (Low <= High && MagicNumber && Count <= 5)
{
DifferenceOfRange = High - Low;
Midpoint = DifferenceOfRange / 2;
MidValue = Low + Midpoint;
if (Low < High && int.Parse(Console.ReadLine()) == 2)
{
Low = MidValue + 1;
Console.WriteLine("Your number is {0}",MidValue);
}
else if(Low > High && int.Parse(Console.ReadLine()) == 1)
{
High = MidValue - 1;
Console.WriteLine("Your number is {0}",MidValue);
}
else if (Count >= 5)
{
Console.WriteLine("Computer loses");
}
Count++;
}
}
}
}
解决方法
您需要 readLine 一次,并将其存储在一个变量中以用于您的所有 if 语句。
using System;
namespace NumberGuessingGame
{
class Program
{
static void Main(string[] args)
{
int Low = 1;
int High = 100;
int DifferenceOfRange = High - Low;
int Midpoint = DifferenceOfRange / 2;
int MidValue = Low + Midpoint;
int Count = 1;
bool MagicNumber = true;
Console.WriteLine("Pick a magic number between 1 to 100. Press enter to continue");
Console.ReadKey();
while (Low <= High && MagicNumber)
{
DifferenceOfRange = High - Low;
Midpoint = DifferenceOfRange / 2;
MidValue = Low + Midpoint;
Console.WriteLine("Is your magic number: {0}",MidValue);
Console.WriteLine(" 1: No my magic number is lower \n 2: No my magic number is greater \n 3: That is my magic number! ");
int userChoice = int.Parse(Console.ReadLine());
if (userChoice == 3)
{
Console.WriteLine("Computer Wins!");
MagicNumber = false;
}
if (Low < High && userChoice == 2)
{
Low = MidValue + 1;
//Console.WriteLine("Your number is {0}",MidValue);
}
else if (Low < High && userChoice == 1)
{
High = MidValue - 1;
//Console.WriteLine("Your number is {0}",MidValue);
}
if (Count >= 5)
{
Console.WriteLine("Computer loses");
MagicNumber = false;
}
Count++;
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。