C# 查找问题

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

比如,查找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之间没有水仙花数");//没有找到
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值