每日算法小学习——穷举算法

穷举算法基本思想

        穷举算法的基本思想就是从所有可能的情况中搜索正确的答案,其执行流程如下:
(1)对于一种可能的情况,计算其结果;
(2)判断结果是否满足要求,如果不满足,则执行第(1)步来搜索下一种可能的情况;
        如果满足要求,则表示寻找到一个正确的答案。
        在使用穷举算法时,需要明确的是问题答案的范围,这样才可以在指定范围内搜索答案。指定范围之后,即可使用循环语句和条件判断语句逐步验证候选答案的正确性,从而得到所需要的正确答案。

穷举算法示例

        鸡兔同笼问题
        穷举算法是最基本的算法思想之一,下面通过一个简单的例子来看穷举算法的应用。鸡兔同笼问题最早记载于1500年前的《孙子算经》,这是我国古代一个非常有名的问题。鸡兔同笼的原文记载如下:
        今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?
        这个问题的大致意思是:在一个笼子里关着若干只鸡和若干只兔,从上面数共有35个头;从下面数共有94只脚。问笼中鸡和兔的数量各是多少?

穷举算法思路

        通过对题目分析可以知道鸡的数量应该为0~35的数。这样,可以使用穷举法来逐个判断是否符合条件,从而搜索答案。

穷举算法代码

#include <iostream>
using namespace std;
int qiongju(int head, int foot, int* chicken, int* rabbit)
{
    int re = 0;
    int i, j = 0;

    for (i = 0;i <= head;i++)
    {
        j = head - i;
        if (i * 2 + j * 4 == foot)
        {
            re = 1;
            *chicken = i;
            *rabbit = j;
        }
    }
    return re;
}


int main()
{

    int chicken, rabbit, head, foot, re;

    bool panduan = 0;

    do {
        cout << "鸡兔同笼问题!\n";
        cout << "请输入头总共有多少个?\n";
        cin >> head;
        cout << "请输入脚总共有多少个?\n";
        cin >> foot;

        if (foot <= 0 || head <= 0)
        {
            panduan = 1;
            cout << "输入有误,请重新输入!" << endl;
        }

    } while (panduan == 1);

    re = qiongju(head, foot, &chicken, &rabbit);
    if (re == 1)
    {
        cout << "鸡总共有:" << chicken << endl;
        cout << "兔总共有:" << rabbit << endl;
    }
    else
    {
        cout << "无法求解" << endl;
    }
    return 0;
}

结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值