查找问题是指这么一种场景,在一个样本范围内,是否存在需要的数据。
比如,查找100-200之间是否存在水仙花数。
这里说的查找问题和其他遍历问题的根本区别在于,查找问题不关心找到的数据是什么,仅仅关心是否找到。
在解决该问题的时候,往往使用以下的方案:
第一步:定义一个bool变量isFind,表示是否找到,由于现在还没有开始查找,自然还没有找到,所以,一开始,该变量的值是false。
bool isFind = false;
第二步:遍历样本,寻找需要的数据,若找到了,把变量isFind设置为true。由于只关心是否找到,不关心找到过少个,因此,既然找到了,就没有必要继续找下去,立即退出循环。
for (遍历样本)
{
if (样本数据满足要求)
{
isFind = true; // 记录:找到了
break;// 不需要继续寻找,结束for循环
}
}
第三步:遍历结束后,判断isFind变量中的结果,看是否找到,做后续处理。
if (isFind)
{
//找到了
}
else
{
//没有找到
}
仔细阅读上面三个步骤,理解其思维过程。
现在,用一些例子来演示查找问题。
查找100-200之间是否存在水仙花数
根据之前分析的查找问题的解题思路,可以使用如下代码结构:
//第一步
bool isFind = false; // 查找开始前,没有找到
//第二步
for (int i = 100; i <= 200; i++)
{
// 判断i是否是水仙花数
int a = i / 100 % 10; //百位
int b = i / 10 % 10; //十位
int c = i % 10; //个位
if (a * a * a + b * b * b + c * c * c == i)
{
isFind = true; //找到了!i是水仙花数
break; // 无须继续寻找,结束循环
}
}
//第三步
if (isFind)
{
Console.Write("100-200之间存在水仙花数");//找到了
}
else
{
Console.Write("100-200之间没有水仙花数");//没有找到
}
C# 查找问题
最新推荐文章于 2024-02-19 23:53:04 发布