枚举 暴力枚举 穷举 实例

以你之姓@ 2022-11-05 13:50 424阅读 0赞

名词解释

  • 一、枚举
  • 二、暴力枚举
  • 三、穷举
  • 四、实例(输入实例)

一、枚举

1.枚举:是一个被命名的整型常数的集合

2.枚举法是在分析问题时,逐个列举出所有可能情况,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃,最后得出一般结论。主要利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。枚举算法的核心思想就是:枚举所有的可能。

3.形式 :
enum 枚举名{

标识符[=整型常数],

标识符[=整型常数],

标识符[=整型常数]

} 枚举变量;

4.案例引入(百钱买白鸡)

1,问题描述:
公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
2,算法分析:
利用枚举法解决该问题,以三种鸡的个数为枚举对象,分别设为mj,gj和xj,用三种鸡的总数 (mj+gj+xj=100)和买鸡钱的总数(1/3*xj+mj*3+gj*5=100)作为判定条件,穷举各种鸡的个数。

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int mj=0, gj=0, xj=0; //定义变量分别表示母鸡、公鸡、小鸡并初始化
  6. for (gj = 0; gj <= 20; gj++) //公鸡最多可买20个
  7. {
  8. for (mj = 0; mj <= 33; mj++) //母鸡最多可买33个
  9. {
  10. xj = 100 - gj - mj; // 三种鸡的总数是100只
  11. if (xj % 3 == 0 && 5 * gj + 3 * mj + xj / 3 == 100) // 总花费为100元。
  12. printf("公鸡为 %d 只,母鸡为 %d 只,小鸡为 %d 只!\n", gj, mj, xj);
  13. }
  14. }
  15. system("pause");
  16. return 0;
  17. }

二、暴力枚举

简单暴力的方法,也就是和枚举法一样,列举出所有可能的结果。

三、穷举

利用计算机运算速度快、精确度高的特点,对要解决的问题的所有可能情况,一个不漏的进行检查,从中找出符合要求的答案。

和上面两个一样,有两个关键点,一是要确定范围,二是要验证条件

四、实例

参数分为形参和实参

实例主要就是所说的实参

实例是指基于某个类的对象的实现,这一过程被称为实例化。

案例:

定义一个类Book,这个类对所有的书进行了抽象,拥有书名、出版社、作者、价格等属性。那么一本具体的书就是这个类的对象,也是这个类的实例。

发表评论

表情:
评论列表 (有 0 条评论,424人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ACM.暴力

    \有一类问题可以采用一种盲目的搜索方法,在搜索结果的过程中,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的,保留那些符合要求的,这种方法叫枚举算法

    相关 暴力

    Problem Description 小埋今天出门准备买一堆漫画书回来,书的套餐类型有 3 种,第一种书是单本的,第二种书是两本捆在一起的,第三种是三本书捆在一起的。每

    相关 1.4 (穷举)算法

    1.4.1算法思路 枚举法的本质就是从所有的候选答案中去搜索正确的解,视同该算法需要满足两个条件: (1)可预先确定候选答案的数量; (2)候选答案的范围在求解之间必须有