算法设计与分析--蛮力法
文章目录
- 一、蛮力算法简介
- 二、蛮力--枚举法
- 题目及运行
- 三、总结
前言
算法语言--Java语言
一、蛮力算法简介
蛮力法是基于计算机运算速度快这一特性,在解决问题时采取的一种”懒惰“策略。这种策略不经过(或者说是经过很少的思考),把问题的所有情况或者所有过程交给计算机去一一尝试,从中找出问题的解。蛮力策略的应用很广,具体表现形式各异。
数据结构课程中学习的一些算法:选择排序,冒泡排序,插入排序,顺序查找等,都是蛮力策略的具体应用!
二、蛮力--枚举法
1、枚举法简介
枚举法是蛮力策略的一种表现形式,也是一种使用非常普遍的思维方式,它是根据问题中的条件将可能的情况一一列举出来,逐一尝试中找出满足问题条件的解。但有时一一列举出的情况数目很大,如果超出了所能忍受的范围,则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题可能解的枚举数目。
2-1枚举实例
百钱百鸡问题:一百块钱去买一百只鸡,公鸡一只值5块钱,母鸡一只值3块钱,小鸡1块钱可以买三只,请问100块可以买公鸡,母鸡,小鸡各多少只?
方法:找出枚举范围,找出约束条件
尝试范围:由题意给定共100块钱要买鸡,若全买公鸡最多买100/5=20只,显然x的范围在1~20之间;同理,y的取值范围在1~33之间,z的范围在1~100之间!
约束条件:鸡要有100只,钱要有100块
x+y+z=100且5x+3y+z/3=100;
2-1代码实现
package Javaclass;
import java.util.*;
public class Practice {public static void main(String[] args){for(int x=1;x<=20;x++){for(int y=1;y<=33;y++){int z = 100-x-y;if(5*x+3*y+z/3==100&&z%3==0){System.out.println("公鸡:"+x+"\t母鸡:"+y+"\t小鸡:"+z);}}}}
}
2-2枚举实例
求3个数的最小公倍数:最小数刚好能整除三个数。例如:13和7的最小公倍数是91。
方法: 暴力求解,从2开始往上累加,直到找出即可
尝试范围:1、2,3,4.....
约束条件:找到最小就停止
2-2代码实现
package Javaclass;
import java.util.*;
public class Practice {public static void main(String[] args){Scanner in = new Scanner(System.in);int a = in.nextInt();int b = in.nextInt();int c = in.nextInt();for(int i=1;i<=a*b*c;i++){if(i%a==0&&i%b==0&&i%c==0){System.out.println("最小公倍数为:"+i);break;}}}
}
三、总结
算法说明:蛮力算法不需要思考,只用按照题目的要求定位条件和范围即可,算法虽然简单易懂,但一旦遇到较大的数据时,运行的效率会非常低,可能还会跑不出来。
由此我们要注意:在对运行效率要求较高的大规模的数据处理问题时,必须多动脑筋找出效率较高的数学模型及其对应的算法。
算法设计与分析--蛮力法相关推荐
- 算法设计与分析------蛮力法
算法设计与分析------蛮力法(c语言) 一.蛮力法(穷举法 枚举法) 1.定义 2.蛮力法使用情况 3.蛮力法的优点 4.蛮力法的缺点 5.采用蛮力法设计算法的2类: 6.简单选择排序和冒泡排序 ...
- 算法设计与分析—蛮力法
蛮力法 蛮力法概述 蛮力法也称穷举法(枚举法)或暴力法,是一种简单的直接解决问题的方法,通常根据问题的描述和所涉及的概念定义,对问题所有可能的状态(结果)一一进行测试,直到找到解或将全部可能的状态都测 ...
- 算法设计与分析之蛮力法
文章目录 前言 一.蛮力法设计思想 二.对蛮力法的思考 三.蛮力法的优缺点 四.使用蛮力法的几种情况 五.蛮力法设计步骤 六.蛮力法示例 总结 前言 大家好,我是一只勤勤恳恳的程序猿.本篇文章小猿将跟 ...
- 算法分析学习笔记二 蛮力法
算法设计与分析之二 蛮力法 目录 1.蛮力法的设计思想 2.蛮力法优点 3. 冒泡排序分析 4. 选择排序分析 5. 蛮力法中冒泡排序与选择排序的时间空间复杂度分析 6. 蛮力法C语言实现 7. 算法 ...
- 计算机算法设计与分析教学大纲,算法设计与分析的教与学(教学大纲)
原标题:算法设计与分析的教与学(教学大纲) 课程代码:**** 课程负责人: **** 课程中文名称:算法设计与分析 课程英文名称:Designand Analysis of Algorithms 课 ...
- 算法设计与分析100例子(C语言版)
算法设计与分析100例子 循环与递归 标题 算法与数据结构 优化算法的基本技巧 优化算法的数学模型 迭代算法 [例1]兔子繁殖问题 蛮力法 循环与递归 标题 算法与数据结构 优化算法的基本技巧 优化算 ...
- 软件算法设计与分析 期中复习
软件算法设计与分析 期中复习 第四章 蛮力法 蛮力法/多项式求值 最近点对问题 蛮力法的优缺点 旅行推销商问题 背包问题 分配问题 穷举法特点 第五章 分治法 5.1 分治法的基本思想 5.2 寻找最 ...
- 算法设计与分析课程的时间空间复杂度
算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
最新文章
- OSChina 周六乱弹 ——土肥圆装高富帅相亲节目现场拆穿
- 函数计算支持 MySQL 实例绑定
- 大学c语言课程及答案,某大学《C语言程序设计》课程考试试卷(含答案).doc
- C和指针之函数之求参数列表中的最大值
- java中的codereview
- C++ 查看输入流中的下一个字符
- 将一个包含汉字的字符串逐个转化为数字,并得出该字符串的十进制和
- Segment Advisor
- 使用docker+tomcat部署jenkins
- xpraid安装_在Win2003/XP安装光盘中集成RAID驱动 不用软驱装RAID/SATA/SAS驱动
- php在线拍照代码,html5可以实现在线拍照了
- C/C++编程:仿函数
- 慕课网付费视频 linux,分享给 Linux 用户的 10 有用工具
- Linux Kernel compile
- 为什么时钟和复位信号要在综合阶段设置为set_drive 0和set_dont_touch_network
- 朋友圈加粗字体数字_利用Stylus插件让Chrome有macOS的字体渲染效果
- 系统检测到您疑似使用网页抓取工具访问本_12款最常使用的网络爬虫工具推荐...
- Ubuntu安装使用Krita
- QQ能上网,浏览器打不开网页,怎么办?
- 苹果cms是什么东西?
热门文章
- 微信小程序wx.login()登录
- Vue 第三方集成之 Cesium
- codeforces 698A Vacations
- python office365_python office365创建会议甚至
- DEV 的使用技巧(开学季)
- flask_sqlalchemy迁移数据库出错Context impl MySQLImpl. Will assume non-transactional DDL. No changes in sche
- 使用gzip优化web应用(filter实现)
- Redis高可用解决方案:sentinel(哨兵模式)和集群
- 推荐个将其他文档转为pdf的软件:Nitro PDF Creator
- 枚举 暴力枚举 穷举 实例