【校招常见算法】暴力法、模拟
目录
- 前言
- 什么是暴力法?
- 什么是模拟?
- 例题
- 小结
前言
【校招常见算法】暴力法、模拟,是最基础的算法,我们后面要学习的算法很多时候都要先从暴力法、模拟开始去思考,最后才能想出比较优的解法。
视频链接:【校招常见算法】暴力法、模拟
什么是暴力法?
第一次认识到 暴力法还是在大一的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-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ... https://blog.csdn.net/BaiHuaXiu123/article/details/51475384 摘要 之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,有时间去各大 ... 原文地址:http://www.ctocio.com/hotnews/15919.html 偶然看到的一篇文章,这篇文章写的很清晰,所以转载一下,补充自己的知识库,以下为正文 机器学习无疑是当前数据分 ... 1 acm常见算法及例题 2 3 初期: 4 一.基本算法: 5 (1)枚举. (poj1753,poj2965) 6 (2)贪心(poj1328,poj2109,poj2586) 7 (3)递归和分 ... ps.此贴大部分文字与代码来自网上,我只是取长补短整理了下 S="c a b a" 那么 S' = "a b a c", 这样的情况下 S和 S'的最长公共 ... 1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照 ... 算法01-蛮力法 一.蛮力法介绍 蛮力法(brute force method,也称为穷举法或枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述,所以,蛮力法也是最容易应用的方法.但是,用 ... 摘要 之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,有时间去各大技术论坛看看,刚好看到一篇关于机器学习不错的文章,在这里就分享给大家了. 机器学习无疑是当前数据分析领域的一个热点内容 ...【校招常见算法】暴力法、模拟相关推荐
最新文章
热门文章