一.定义
蛮力法是一种简单直接解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。

二.蛮力法的用处

a.和其他策略不同,我们可以用它解决广阔领域的各种问题,实际上,它可能是唯一一种什么问题都能解决的一般性方法。

b.对于一些重要的问题(例如 排序,查找,矩阵乘法和字符串匹配)来说,蛮力法可以可以产生一些合理的算法

c.如果要解决的问题实例不多,而且蛮力法可以用一种能够接受的速度对实例求解,那么设计一个更高效率的算法是不值得的

d.即使效率很低,仍然可以用蛮力算法解决一些小规模的问题实例。

f.蛮力算法可以为研究或教学目的服务,例如,可以以之为准绳 ,来衡量同样问题的更高效算法。

三.问题实例

1.选择排序
选择排序最开始的时候,扫描整个列表,将最小的元素与第一个元素进行交换。然后从第二个元素开始扫描列表,找到n - 1个元素中最小元素和第二个元素交换。直到第n - 1遍。

    int min;for(int i = 0;i <= n - 2;i ++){min = i;for(j = i + 1;j <= n - 1;j ++){if(A[min] > A[j])min = j;   //升序排列,降序改为  < 即可swap(A[min],A[j]);}}

2.冒泡排序
它比较表中的相邻元素,如果是逆序的话,就交换他们的位置。重复多次以后,最大的元素就会沉到列表的最后一个位置。第二遍操作,第二大的元素沉下去,这样进行n - 1遍操作,该列表就排好序了。

    for(int i = 0;i <= n - 2;i ++)for(int j = 0;j <= n - 1;j ++){if(A[j] > A[j + 1])swap[A[j + 1],A[j]);}

3.字符串匹配问题
它的想法很简单,就是从主串的第一个元素开始与模串的所有元素进行匹配,如果匹配失败,那么就返回主串的第二个元素,直到遍历完所有主串的元素。
这个算法叫做BF。

# include<iostream>
using namespace std;string BF(string s1,string s2)
{int i,j;i=j=0; string ss = "error";while(s1[i]!='\0'&&s2[j]!='\0'){if(s1[i]==s2[j]){i++;j++;}else {i=i-j+1;j=0;}}if(s2[j]=='\0')return s1;else return ss;
}main()
{string s1="abcdef";string s2="dfa";string s;s = BF(s1,s2);cout<<s;
}

4.还有比较经典的旅行商问题和分配问题,分配问题在分支限界法中会详细讲解,这里不多做赘述、这两个问题在空间,时间允许的情况下皆可通过穷举查找的办法解决。

算法复习 - 蛮力法相关推荐

  1. 蛮力法(python)

    文章目录 蛮力法 一.别名 二.基本思想 1.引入库 2.特点 总结 下一篇 蛮力法 作为算法入门级别的算法,蛮力法,掌握好蛮力法,并对之有兴趣,可激发对算法的乐趣 一.别名 蛮力法也叫暴力法,穷举法 ...

  2. 算法设计与分析复习第一二章(时间复杂度和蛮力法)

    算法复习一二章 第一章时间复杂度 第二章蛮力法 (1)查找问题 顺序查找 (2)排序问题 选择排序 起泡排序 (3)组合问题 0-1bag问题概述(略) (4)图问题 哈密顿回路 TSP问题 (5)几 ...

  3. 生成排列 --- 蛮力法,Johnson-Trotter算法

    生成排列 --- 蛮力法,Johnson-Trotter算法 蛮力法 Johnson-Trotter算法 蛮力法 思路: 通过递归遍历所有的排列方式. 代码演示: #include <iostr ...

  4. 【算法设计zxd】第四章蛮力法 1.枚举法 02穷举查找

    目录 蛮力法(brute force): [例4-1]链环数字对  问题分析  计算模型 pair_digital(int n): 代码: [例4-2]解数字迷: 思考题:ACM预测:​ 问题分析 ...

  5. 算法分析学习笔记二 蛮力法

    算法设计与分析之二 蛮力法 目录 1.蛮力法的设计思想 2.蛮力法优点 3. 冒泡排序分析 4. 选择排序分析 5. 蛮力法中冒泡排序与选择排序的时间空间复杂度分析 6. 蛮力法C语言实现 7. 算法 ...

  6. 算法设计与分析------蛮力法

    算法设计与分析------蛮力法(c语言) 一.蛮力法(穷举法 枚举法) 1.定义 2.蛮力法使用情况 3.蛮力法的优点 4.蛮力法的缺点 5.采用蛮力法设计算法的2类: 6.简单选择排序和冒泡排序 ...

  7. 算法设计与分析之蛮力法

    文章目录 前言 一.蛮力法设计思想 二.对蛮力法的思考 三.蛮力法的优缺点 四.使用蛮力法的几种情况 五.蛮力法设计步骤 六.蛮力法示例 总结 前言 大家好,我是一只勤勤恳恳的程序猿.本篇文章小猿将跟 ...

  8. 算法设计与分析:蛮力法

    算法分析与设计实验报告 第 四 次实验 姓名 裴朵朵 学号 5001170016 班级 计科一班 时间 2019.10.31 地点 实验名称 暴力法的使用 实验目的 1.理解暴力法的工作原理.过程技巧 ...

  9. 算法设计与分析—蛮力法

    蛮力法 蛮力法概述 蛮力法也称穷举法(枚举法)或暴力法,是一种简单的直接解决问题的方法,通常根据问题的描述和所涉及的概念定义,对问题所有可能的状态(结果)一一进行测试,直到找到解或将全部可能的状态都测 ...

最新文章

  1. CSR稀疏矩阵存储方式
  2. 监控平台zabbix高级配置
  3. NanoPi NEO Air使用十:自己编写驱动来控制LED
  4. (二)文档请求不同源之window.name跨域
  5. 50个Android开发人员必备UI效果源码[转载]
  6. 【hdu1241Oil Deposits】【HDU 2612 Find a way】
  7. Flowable最新版(6.4) 新特性
  8. JVM----类的加载机制
  9. 召回离线评估指标(一)
  10. 硬盘分区表知识—详解硬盘MBR
  11. 有关计算机组成原理知识的论文,计算机组成原理课程相关论文
  12. 扩展欧几里得算法(Python)
  13. 新路由3详细刷机教程
  14. for循环、break和continue、循环的嵌套、white和do-white循环
  15. python枚举详解
  16. 大神级DIY作品:运动跟随大眼睛,软件硬件结构一个都不能少
  17. ASO | APP推广之ASO优化中的九大奥义。
  18. Leaflet加载百度地图
  19. 一种ESP8266使用MQTT连接阿里云和云Web方法
  20. study mysql

热门文章

  1. 计算机组装维修考点,计算机维修工(基础知识)—教材
  2. Webrtc 多人视频会议系统 服务器 Licode 介绍
  3. Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议
  4. 产品vr全景摄影拍摄公司提升客户的体验感与满意度
  5. linux需要看门狗喂狗程序,多任务看门狗, 喂狗方法
  6. 去雾综述_偏振光学成像去雾技术综述
  7. 计算机与信息科学书刊,第五届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2020)...
  8. Unity自动驾驶仿真
  9. 2023王道数据结构考研习题汇总
  10. 关于SVN 操作 提示文件已过时,请先update