枚举-算法
来源:互联网 发布:东莞天行健网络怎么样 编辑:程序博客网 时间:2024/05/19 05:34
枚举
求解策略:
它是基于已有知识进行的一种答案猜测的一类问题思想
例如:求小于N的最大素数
有以下一个问题:
1.找不到一个数学公式,直接就去求出最大小于N的最大素数。
2.我们可以这样思考:N-1是素数吗? N-2是素数吗? ......一直到找到这个数为止,(这个过程我们在不断的猜想,不断 地将每一种情况考虑,这就是枚举的策略)假设这个数是N-k;
3.在上面的过程中又需要思考一个问题问题:
N-K是素数的条件(也就是我们是怎么知道N-K是素数的,N-k这个数就是根据我们自己已经掌握的知识进行筛选出来的结果:):
大于2小于根号(N-K)的数都不能被整除的数就是素数;
解决办法
1.从N这个数开始判断是不是素数;根据素数的条件判断;
2.如果是就输出这个值;不是,就将这个数减1,再重复上面的操作;
#include<iostream>#include<cmath>using namespace std;int main(){ int N = 100;//假设N是100 N = N-1;//保证N是小于100的数; while(N>=1){int flag = 1;//一开始假设就是标记是素数if(N%2 == 0)//可以根据自己的知识提前判断是不是素数(偶数一定不是素数) { N = N-1; continue;} for(int i = 2;i<sqrt(N);i++){ if(N%i == 0) { flag = 0;//标记不是素数; break; } } if(flag == 1) {cout <<N<<endl;break;} N = N-1; }
枚举的思想: 猜测
枚举
从可能的集合中一 一列举各元素
• 根据所知道的知识,给每一个猜测的答案判断是不是所需;
枚举过程
• 判断猜测的答案是否正确
N-1是小于N的最大素数吗?
• 进行新的猜测时,猜测的结果必须是已经进行判断是不是素数.
• 猜测的过程中要及早排除错误的答案.如: 只有奇数才可能是素数
枚举中三个关键问题
问题一
给出解空间,建立简洁的数学模型
问题二
减少搜索的空间
利用知识缩小模型中各变量的取值范围,避免不必要的计算
问题三
采用合适的搜索顺序
说明:关于这个题目有很好的解决方法,这里就是为了讲解枚举这个方法;
关于这个题目的更好方法,可以访问:http://blog.csdn.net/sinapme/article/details/17137761
阅读全文
0 0
- 枚举算法
- 枚举算法
- 枚举算法
- 枚举算法
- 枚举算法
- 枚举算法
- 枚举-算法
- 【枚举算法】枚举法概念
- 转贴 : 枚举算法
- ACM--枚举算法
- 枚举(穷举)算法
- 关于排列枚举算法
- 枚举算法简介
- 枚举算法(一)
- 模拟和枚举算法
- javascript--枚举算法实现
- 算法之枚举法
- 算法之枚举思想
- C#利用Mysql.Data.dll操作Mysql数据库
- Shell之Sed命令-yellowcong
- A616-HP-ProDesk 480 G2 MT电脑网络同传
- 主键、外键和索引
- MySQL—浅谈MySQL存储引擎
- 枚举-算法
- MySQL慢查询(二)
- springMVC项目中整合BaseDao
- 【干货】【通过特征可视化分析调整网络技巧】
- 文件操作(创建,打开,读取,关闭等)
- 【蓝桥杯】【杨辉三角】
- tensorflow 安装
- swiper 滑动图片垂直居中
- android 检查对象属性是否有一个为空