目录

  • 前言
  • 什么是暴力法?
  • 什么是模拟?
  • 例题
  • 小结

前言

  【校招常见算法】暴力法、模拟,是最基础的算法,我们后面要学习的算法很多时候都要先从暴力法、模拟开始去思考,最后才能想出比较优的解法。

视频链接:【校招常见算法】暴力法、模拟

什么是暴力法?

  第一次认识到 暴力法还是在大一的CPP课本例题鸡兔同笼问题。今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?翻译过来就是:有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚,问笼中各有多少只鸡和兔?

  小学数学里用解方程的方式可以解出来,用暴力法也可以把解决这个问题:鸡最少可以有0只,最多可以有35只(因为有35个头),兔子最少可以有0只,最多有23只(因为有94只脚)。

  把鸡和兔子所有的组合列出来,组合有很多:[0,0]、[0,1]、[0,2]...[35,23]。把各种组合的头和脚加起来,如果是符合题目要求的,说明就是答案,代码如下:

for(int x=0;x<=35;x++) {//列出所有鸡的数量for(int y=0;y<=23;y++) {//列出所有兔子的数量if(x+y==35 && 2*x+4*y==96) {//判断头和脚的数量符合要求System.out.println("鸡有"+x+"只,兔子有"+y+"只");}}
}

  所谓暴力法, 就是把所有情况不重复不遗漏地枚举出来,然后找到我们想要的答案。枚举就是列举的意思,注意这里的 不重复不遗漏,如果遗漏的话,就可能会把我们要的答案也漏掉了,至于不重复,其实有的题目如果重复了也没有影响,能不能重复具体得看题目。

什么是模拟?

  暴力模拟,往往我们是把它们连在一起说的, 模拟就是没有使用什么特别复杂的算法直接按照题目意思去做就可以了,注意各种细节边界条件。一般来说模拟没什么难度,但要注意各种细节和边界条件了。
  理解了它们的概念后,上题目。

例题

1、leetcode:1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。

示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 10^3
  • 10^9 <= nums[i] <= 10^9
  • 10^9 <= target <= 10^9
  • 只会存在一个有效答案

★题意:
  在一个数组里找两个数字,使得它们的和等于target,这里提到了只会有一个有效答案,所以就不用考虑多个答案的情况了。

【校招常见算法】暴力法、模拟相关推荐

  1. 几个常见的简单的算法(暴力法,递推法,枚举法,递归法,分治法,贪心法,回溯法)

    最近在学习算法相关知识. 通过买的视频教程了解到了一些简单的算法,为了加深感悟,同时也为了理解,将这几个常见的算法的定义进行记录. 算法是程序的灵魂,也可以认为是程序最重要的部分. 在通过算法解决问题 ...

  2. 洛谷专题训练 ——【算法1-1】模拟与高精度

    洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...

  3. 人工智能之机器学习常见算法

    https://blog.csdn.net/BaiHuaXiu123/article/details/51475384 摘要 之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,有时间去各大 ...

  4. 机器学习常见算法汇总

    原文地址:http://www.ctocio.com/hotnews/15919.html 偶然看到的一篇文章,这篇文章写的很清晰,所以转载一下,补充自己的知识库,以下为正文 机器学习无疑是当前数据分 ...

  5. acm常见算法及例题

    1 acm常见算法及例题 2 3 初期: 4 一.基本算法: 5 (1)枚举. (poj1753,poj2965) 6 (2)贪心(poj1328,poj2109,poj2586) 7 (3)递归和分 ...

  6. 1112个人赛,最长回文串常见算法讨论

    ps.此贴大部分文字与代码来自网上,我只是取长补短整理了下 S="c a b a"  那么  S' = "a b a c", 这样的情况下 S和 S'的最长公共 ...

  7. 51Nod-1080 两个数的平方和【暴力法】

    1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照 ...

  8. 蛮力枚举算法C语言,算法01-蛮力法

    算法01-蛮力法 一.蛮力法介绍 蛮力法(brute force method,也称为穷举法或枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法.但是,用 ...

  9. 人工智能—机器学习常见算法

    摘要 之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,有时间去各大技术论坛看看,刚好看到一篇关于机器学习不错的文章,在这里就分享给大家了.  机器学习无疑是当前数据分析领域的一个热点内容 ...

最新文章

  1. jquery对象PHP转换,jQuery对象与DOM对象转换方法详解_jquery
  2. 一个简易上手的短信服务Spring Boot Starter,连傻瓜都会!
  3. Python 程序的抽样分析器 - Py-Spy
  4. WCF 第二章 契约 系列文章
  5. 华为交换机stp原理透析及实战
  6. 深度神经网络的正则化
  7. Linkerd、Consul、Istio、Kuma、Traefik、AWS App服务网格全方位对比
  8. 通过ssh远程启动linux上的Qt界面程序
  9. ArcGIS工具 - 导出数据库结构
  10. 【沃顿商学院学习笔记】公益创业——07现实可行性细节及成本表Operations RealitiesCost Table
  11. 安装算量软件快速选择计算图元
  12. 事件2 有源码 可以随意进行练习哈 太棒了 一起加油 一起成长
  13. 2019年高压电工作业安全生产模拟考试题库及答案
  14. 安卓sdk自带模拟器的使用
  15. AcWing 217 绿豆蛙的归宿(概率与期望)
  16. PPT小事(二)“愿景”“使命”“宗旨”
  17. 论文精简翻译 Online Deduplication for Databases
  18. 31省市数字化转型路线图公布
  19. PDF文件打开密码忘记了
  20. 自定义View之绘图篇(二):路径(Path)

热门文章

  1. 2015年9月13日和15日【shell、sedawk 的使用(一)】-JY1506402-19+liuhui880818
  2. 深入MYSQL之事务篇(一)
  3. Linux查询文件的编码格式
  4. micropython 串口_MicroPython教程5-编码与串口
  5. 音乐欣赏课程笔记(二)
  6. html中的div标签的含义和应用
  7. (一百零二)Android O wpa_supplicant初始化学习
  8. 520送女友什么礼物、520礼物送女友推荐
  9. 掌握自动化部署,拿下DevOps半壁江山还远吗?
  10. Java InputStreamReader类