遍历的查找问题是指这么一种场景,在一个样本范围内,是否存在需要的数据。

例如:查找谋区间之间是否存在水仙花数。

(分析问题:查找问题和其他遍历问题的根本区别在于,查找问题不关心找到的数据是什么,仅仅关心是否找到。)

第 1 步:定义一个bool变量isFind,表示是否找到,由于现在还没有开始查找,自然还没有找到,所以,一开始,该变量的值是false。

 

bool isFind = false;

 

第 2 步:遍历样本,寻找需要的数据,若找到了,把变量isFind设置为true。由于只关心是否找到,不关心找到过少个,因此,既然找到了,就没有必要继续找下去,立即退出循环。

 

for (遍历样本)
{
if (样本数据满足要求)
{
isFind = true; // 记录:找到了
break;// 不需要继续寻找,结束for循环
}
}

第 3 步:遍历结束后,判断isFind变量中的结果,看是否找到,做后续处理。

 

if (isFind)
{
//找到了
}
else
{
//没有找到
}

 

现在我们找一个例子来实现一下上述的方法。

例:查找 100 - 500 之间是否存在水仙花数

 

//第一步
bool isFind = false; // 查找开始前,没有找到
//第二步
for (int i = 100; i <= 500; 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-500之间存在水仙花数");//找到了
}
else
{
Console.Write("100-500之间没有水仙花数");//没有找到
}

 

希望能和大家一起分享和讨论各种问题。

 posted on 2018-08-04 20:48  渡、  阅读(641)  评论(0编辑  收藏  举报