枚举算法学习

枚举算法

枚举算法介绍

  1. 枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:枚举所有的可能。
  2. 枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:
    (1)可预先确定候选答案的数量;
    (2)候选答案的范围在求解之前必须有一个确定的集合。
  3. 枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是正确的。
  4. 枚举算法分为循环枚举、子集枚举、排列枚举三种。
  5. 枚举是用户定义的数据类型,由整数常量组成。可以使用关键字enum,定义枚举。
enum season { spring, summer, autumn, winter };

在这里,枚举的名称是season。
而且,spring,summer和winter是season类型的值。
默认情况下spring为0,summer为1,依此类推。您可以在声明期间更改枚举元素的默认值(如有必要的话)。

enum season 
{   spring = 0, 
    summer = 4, 
    autumn = 8,
    winter = 12
};
  1. 枚举类型声明
    创建枚举类型时,只会创建该变量的蓝图。这是创建枚举类型变量的方法。
enum boolean { false, true };
// 内部函数
enum boolean check;

在这里,创建了enum boolean类型的变量check。

这是使用不同语法声明相同check变量的另一种方法。

enum boolean 
{ 
   false, true
} check;
  1. 如何将枚举用于标志?
    让我们举个实例,
enum designFlags {
	ITALICS = 1,
	BOLD = 2,
	UNDERLINE = 4
} button;

假设您正在为Windows应用程序设计一个按钮。可以设置标志 ITALICS,BOLD和UNDERLINE 来处理文本。

在上面的伪代码中,所有的积分常数都是2的幂是有原因的。

// In binary

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

由于积分常数是2的幂,所以可以同时组合两个或多个标志,而不用使用按位或|操作符进行重叠。这允许您同时选择两个或多个标志。例如,

#include <iostream>
using namespace std;

enum designFlags {
    BOLD = 1,
    ITALICS = 2,
    UNDERLINE = 4
};

int main() 
{
    int myDesign = BOLD | UNDERLINE; 

        //    00000001
        //  | 00000100
        //  ___________
        //    00000101

    cout << myDesign;

    return 0;
}

输出结果

5

当输出为5时,您始终知道会使用粗体(bold) 和 (underline) 下划线。

另外,可以在要求中添加标志。

if (myDesign & ITALICS) {
    // 斜体代码
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值