
算法课
俺叫西西弗斯
找份前端开发工作
都柏林理工大学博士拟录取(没钱读)
李莫瑞克大学硕士在读(主持爱尔兰软件研究中心)
重庆2022优秀毕业生
展开
-
折半查找
查找分类(1)顺序查找(2)折半查找(1)顺序查找思路:将所要查询的数据和已经存在的所有数据进行依次比对,如果相同则找到(2)折半查找提前:必须是对有序(升序还是降序)的数据进行查询。否则不能进行折半查找!【灵魂所在】思路:对有序的数值,求中间值,判断这个中间是否是所要查询的对象,如果是则输出,如果不是所要查找的对象则立即比较大小如果中间值小于查找值,则继续再右边进行查找如果中间值大于查找值,则继续再左边进行查找一直重复下去。【明显能体现出 分治法的思路】举例说明假设找8原创 2020-07-20 17:40:21 · 488 阅读 · 0 评论 -
[算法课]算法考试赌题
赌题目录递归:归并#include<iostream>#include<vector>using namespace std;vector<int> arr;vector<int> tmpArr(1000);void func(int l,int r){ if(l>=r)return ; int mid =l+r>>1; func(l,mid),func(mid+1,r);原创 2020-07-13 13:13:50 · 475 阅读 · 0 评论 -
[算法课]算法考试复习范围全解
文章目录(1)递归① 选择法排序【P63】② 冒泡法排序【P65】③ 全排列【P175】④ Fibonacci 数列(2)分治法① 快速排序【P86】② 归并排序【P88】③ 查找最大值和次大值问题【P91】④ 折半查找【P93】⑤ 2019 年女排世界杯,一共 12 个队伍进行比赛,比赛形式是:单循环赛制。也就是每个队伍之间进行有且仅有一场比赛,编写程序,输入 k 个队伍,输出对应的对阵表例如 k 等于 4,表示 4 个队伍。单循环赛的赛程如下。【P106】(3)蛮力法① 选择法排序【注意是蛮力法的书写】原创 2020-07-08 00:06:28 · 7512 阅读 · 13 评论 -
[算法课] 小偷问题
文章目录算法标签 递归题目来源 算法课题目简介思路代码需要注意的问题算法标签 递归题目来源 算法课题目简介思路很明白的思路一个小偷从N个数列当中获取值,但是必须从左往右固定顺序精简一下,就是一个数值序列,从左往右,获取任意长度下的最小和我们可以使用NXN暴力比对,当然这里我们使用递归也差不多,N个数字,也就是可能存在的和的数字数量实际不定,我们对N个数字都递归,直到获取到第N个数字位置,过程比对代码更新之前理解错了题目的思路,以为是强制从左往右如果是随便在中间插入的话,背包思路似乎原创 2020-06-12 22:44:35 · 2309 阅读 · 0 评论 -
[算法课]实验课全题目详解
文章目录第一部分第一题第二题第二大题第一题平面上的最接近点对第一部分第一题/*s=0 n=1 0; s=1 n=1 1;s=2 n=2 exm:12,2,s=3 n=2 exm:13,1;s=4 n=4 exm:14,13,24,124;s=5 n=4 exm:15,25,125,5;s=5 n=3 观察发现:if n%2==1 ansN=ansN-1else ansN+=ansN(N/2)*/#include <iostream>using namespace s原创 2020-06-01 17:23:01 · 2422 阅读 · 2 评论 -
[算法课]算法课全题目解答及各周链接
文章目录各周链接题目第一周上课题目素数判断思路代码解法1.暴力解法2.优化部分唯一重复值查找思路代码解法1.暴力 暴力比对解法2.利用数组查重作业题目[LeetCode]11. 盛最多水的容器题目思路:题目代码:解法1:双指针,动态规划解法2:蛮力算法自学题目异或解决唯一重复值查找问题思路代码解法1.暴力比对第二周上课题目试题A: 组队数据思路代码解法1.枚举解法2.贪心解法3.深度优先搜索解法4.动态规划试题C: 数列求值思路代码作业题目注意----所有人做这2个题目的时候,使用2种方法,其中一种必须用枚原创 2020-05-29 22:29:34 · 2186 阅读 · 1 评论 -
[算法课]全面翻新计划!第十一周全解
文章目录上课内容贪心法例1 兑换货币颜老板代码更新版测试数据博主提示:注意:贪心算法的思路:请考虑此题用贪心的算法来书写试试看博主注释思路更新版 贪心版本答案思考:【LeetCode】柠檬水找零分析颜老板版本更新版博主思路提醒:例如 单调递增的数字【选自LeetCode】分析更新版更新版 贪心1029. 两地调度【来自LeetCode里面】思路AC代码注明:上课内容贪心法第11次 贪心法问题1 1吨100元的钞票2 100吨1元的钞票如果是你,你选哪个?【送给你的】某人说都要! 太无耻了!原创 2020-05-29 19:56:51 · 374 阅读 · 0 评论 -
[算法课]全面翻新计划!第九周全解
文章目录上课内容例1注意:提醒:蛮力代码注明发现:递归代码评价更新版测试数据答案上课内容第9次课 主题《【回朔法】》例1设计一个算法在1,2,……9(顺序不变)数值之间插入+或者-或者什么都不插入,使得计算结果总是100的程序。输出所有的情况。例如1+2+34-5+67-8+9=100。方法1处理:“什么都不插入”,使用空格来表示!1 对于程序而言,插入的对象是+ - 空格。表示是’+’ ‘-’ ‘ ’定义一个字符数组来存放这3个符号char op[3]={ ’+’,‘-’,‘ ’};原创 2020-05-29 16:09:28 · 375 阅读 · 0 评论 -
[算法课]全面翻新计划!第八周全解
文章目录上课内容蛮力法例1 0/1背包问题颜老板版本 DFS更新版了解更多例1 求迷宫问题颜老板版本更新版图像测试数据注意:例2 第十届蓝桥杯颜老板版本注明上课内容蛮力法**蛮力法的升级版(组合式,会牵涉到之前讲过,也会涉及到最近讲的,也会涉及到未来讲)深度优先算法:二叉树A作为起点,G作为目标开始搜索1 从A出发可以到达的点有B C D,把它们作为下一个目标的候选点2 从候选点中选取一个点,选择最新被添加进到候选点中的候选点(B就是第一个被选的候选点)【其实选择其他点作为选取点】3 移原创 2020-05-29 15:42:11 · 387 阅读 · 0 评论 -
[算法课]全面翻新计划!第七周全解
文章目录上课内容蛮力法解释例1 插入排序颜老板版本更新版测试数据例2 1,2,3,4可以组成那些没有重复的4位数值颜老板版本注明方法2:全排列 【今天的重点】颜老板版本颜老板版本解决如果是1-n的全排列,且n的值自己输入。颜老板版本提醒:注明下课内容例3 0/1背包问题颜老板版本更新版方法一:字符串蛮力方法二:二进制枚举方法三:DFS三.2闫老板思考角度方法四:全排列方法五:数组蛮力答案了解更多上课内容蛮力法解释一、蛮力法的概念也称之为 穷举法【枚举法,暴力破解】它是算法中最常用的算法之一。基本原创 2020-05-29 14:47:41 · 364 阅读 · 0 评论 -
[算法课]全面翻新计划!第六周全解
文章目录上课内容例1 归并排序颜老板版本更新版了解更多例2 折半查找颜老板版本注明折半查找逻辑颜老板版本更新版测试数据折半思考题代码测试数据注意例3 最重要的程序分析第1轮:分析4个队伍的【相当于八个队伍的左上角】第2轮:分析8个队伍的提醒:5,6,7的如何处理,直接去掉8个队伍中多余的就行了颜老板代码吐槽下课内容思路注明:AC代码自学内容自学1(查找最大值和次大值)P91页。思路精简写法了解更多自学2(寻找2个等长有序序列的中位数)P96页。代码上课内容分治法:【先分再治,先治再分】例1 归并排序原创 2020-05-28 16:27:15 · 416 阅读 · 0 评论 -
[算法课]全面翻新计划!第五周全解
文章目录上课部分分治法理论快排颜老板版本更新版测试数据输出显示了解更多上课部分分治法理论1)分治法的理论分而治之生活中:美国。明朝,藩王。 专业解释: 对于一个问题规模为n的问题,如果该问题可以容易的解决直接解决 如果问题比较难解决,则考虑划分为若干个子问题来解决。 但是划分有个前提:子问题相互独立,但是和原问题求解的方法是一致的。 黄色部分的文字告诉我们:分治法编程会用到递归! 最终若干个子问题的解,进行合并得到原本问题的解。2)分治法的思路(1)分解成若原创 2020-05-27 23:12:13 · 272 阅读 · 0 评论 -
[算法课]全面翻新计划!第四周全解
文章目录上课部分内容题目计分颜老板版本枚举dfs版本更新版二进制枚举写法dfs版本答案打印图形分析颜老板版本吐槽了解更多下课内容看图编树吐槽图选数字说明颜老板思路数据答案AC代码吐槽了解更多上课部分内容题目计分1 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手都有一个起步的分数为10分。某获胜选手最终得分刚好是100分,如果不让你看比原创 2020-05-27 22:14:41 · 389 阅读 · 0 评论 -
[算法课]全面翻新计划!第三周全解
文章目录上课部分例1 输入n的值,求n!方法一颜老板版本更新版方法2:颜老板版本更新版注意:递归的定义何时使用递归?例2 输入n的值,求得并输出第n个fibonacci数列的数值。颜老板版本更新版分析分析:颜老板版本更新版例3 选择法排序颜老板版本更新版例4 冒泡法排序:颜老板版本更新版课题总结自学部分拆分输出思路AC代码n皇后的问题思路AC代码了解更多hanoi思路AC代码了解更多上课部分例1 输入n的值,求n!方法一颜老板版本#include<stdio.h>int main(原创 2020-05-27 00:11:32 · 516 阅读 · 0 评论 -
[算法课]全面翻新计划!第十二周全解
文章目录上课部分回顾:例1字典序最小问题PS:颜老板版本更新版吐槽思路AC代码安全版非安全,极简版思考:任意一串字符,删除其中的重复字符!题目描述AC代码哈希表哈希表 写法二ASCII码set多个字符串的情况下set哈希表ASCII例2背包问题:颜老板版本吐槽思路AC代码自学部分霍夫曼编码颜老板版本更新版第三届蓝桥杯【省赛试题8】密码发生器颜老板版本吐槽鸡蛋里找骨头蛋疼环节思路AC代码上课部分回顾:贪心算法的算法思想是简单的!对问题求解的时候每一步的选择(操作)都必须满足当前是最优解!期望:按照原创 2020-05-26 19:32:54 · 434 阅读 · 0 评论 -
[算法课]全面翻新计划!第二周全解
文章目录上课内容试题A: 组队数据详细分析颜老板版本 暴力枚举更新版枚举版本dfs版本贪心版本DP版本测试数据试题C: 数列求值分析方法1颜老板版本数组版本报错:Compiler exceeded OUTPUT limit 内容容量:20190324*(sizeof int)/1024/1024=77M颜老板版本更新版作业部分注意----所有人做这2个题目的时候,使用2种方法,其中一种必须用枚举书写!试题H: 等差数列算法标签:枚举题目描述思路AC代码枚举递归等差数列算法标签: 数论最大公约数题目描述思路C原创 2020-05-26 17:06:45 · 558 阅读 · 0 评论 -
[算法课]全面翻新计划!第一周全解
文章目录上课部分内容分析1:颜老板版本更新版分析2颜老板版本更新版分析3颜老板版本更新版例21-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。设计一个算法,将它找出来,你能否设计一个算法实现?方法1 暴力破解,枚举颜老板版本更新版方法2颜老板版本更新版思考题:方法3:课后习题题目来源:[LeetCode]11. 盛最多水的容器难度标签:中等算法标签:双指针,DP,枚举示例:题目思路:题目代码:解法一:双指针,动态规划解法二:蛮力算法上课部分内容分析1:原创 2020-05-24 13:29:54 · 467 阅读 · 0 评论 -
[算法课][贪心]W12自学2密码发生器
题目来源 算法课算法标签 贪心,完全背包问题题目描述在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了…这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。变换的过程如下:第一步. 把字符串6个一组折叠起来,比如 wangximing则变为:原创 2020-05-23 22:20:11 · 246 阅读 · 0 评论 -
[算法课][贪心][背包]W12例2背包问题
题目来源 算法课算法标签 贪心,完全背包问题题目描述例2背包问题:假如我们有一个可以装100kg物品的背包,我们有5种豆子,每种豆子的总量和总价值各不相同。为了让背包中所装的物品的总价值最大,我们如何选择装哪些豆子,每种装多少?【可以选择某种物品装部分】答案颜老板代码#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<string.h>struct wp{原创 2020-05-23 19:15:38 · 310 阅读 · 0 评论 -
[算法课][贪心]W12例1字典序最小问题
文章目录题目来源 算法课算法标签 字符串,贪心题目描述PS:输入 ACDBCB输出 ABCBCD颜老板代码吐槽思路AC代码题目来源 算法课算法标签 字符串,贪心题目描述问题描述:给定长度为N的字符串S,要构造一个长度为N字符串T。T开始是一个空串,反复执行下列任意操作:1)从S的头部删除一个字符,加到T的尾部;2)从S的尾部删除一个字符,加到T的尾部;目标是要构造字典序尽可能小的字符串T。PS:字典序是指从前到后比较两个字符串的大小的方法。首先比较第1个字符,如果不同则第1个字原创 2020-05-23 15:40:53 · 293 阅读 · 0 评论 -
[算法课][面试题]W12思考|去除字符串中重复的字符
题目来源 算法课算法标签题目描述去除字符串中重复的字符AC代码单字符哈希表#include<iostream>#include<string>#include<unordered_map>using namespace std;unordered_map<char,int> map;int main(){ string s; cin>>s; for(int i=0;i<s.si原创 2020-05-21 22:52:21 · 279 阅读 · 1 评论 -
[算法课]从超简单贪心而来的几个奇怪又好用的写法
题目来源:网络算法标签:贪心题目简介兑换N元的零钱,使得给出的钞票数量最小思路毫无疑问递归访问最大,但这一点都不重要,重要的是我觉得几个写法非常有趣#include<iostream>using namespace std;int m[]={100,50,20,10,5,2,1};const int num = sizeof m /sizeof m[0];//静态得到数组M的大小int z[num];//直接申请M大小的空间int main(){ int n原创 2020-05-14 18:58:58 · 188 阅读 · 0 评论 -
[算法课][全排列]图示123全排列,不能再清楚了
算法标签:全排列图示思路通过二叉树的先序遍历走并且回溯重要的是弄清走法与怎么样交换达到全排列不重不漏的目的AC代码#include<iostream>using namespace std;void dfs(int a[],int n,int i){ if(i==n){for(int i =0;i<n;i++)cout<<a[i];cout<<endl;return ;} //如果是123全排列的话。 //第一层是a原创 2020-05-14 18:38:58 · 832 阅读 · 1 评论 -
[算法课]球员组队
文章目录题目来源:网络算法标签:dfs,贪心思路题目代码题目来源:网络算法标签:dfs,贪心#include<stdio.h>int a[21][6]={0,0,0,0,0,0,1,97,90,0,0,0,2,92,85,96,0,0,3,0,0,0,0,93,4,0,0,0,80,86,5,89,83,97,0,0,6,82,86,0,0,0,7,0,0,0,87,90,8,0,97,96,0,0,9,0,0,89,0,0,10,95,99,0,0,0,11,0原创 2020-05-13 01:20:06 · 442 阅读 · 0 评论 -
[算法课]五种蛮力法解决01背包问题
注明:蛮力法算法标签:全排列,枚举题目简介0/1背包问题【算法中非常经典的一个例题,多种不同的算法可以来实现】有n个重量分别是w1,w2…,wn的物品(物品编号为1-n)它们的价值分别为v1,v2,…,vn给定一个容量为W的背包。设计从这些物品中选取一部分放入该背包的方案。每个物品要么选中要么不选中【每种物品是唯一的】,要求选中的物品不仅能够放在背包中【能放得下】,而且具有最大的价...原创 2020-04-30 23:05:13 · 7770 阅读 · 3 评论 -
[分治]查找最大和次大元素
题目简介查找最大和次大元素题目原思路【问题求解】对于无序序列a[low.high]中,采用分治法求最大元素max1和次大元素max2的过程如下:(1)a[low.high]中只有一个元素:则max1=a[low],max2=-INF(-∞)(要求它们是不同的元素)。(2)a[low.high]中只有两个元素:则max1=MAX{a[low],a[high]},max2=MIN{a[low...原创 2020-04-30 15:06:39 · 2608 阅读 · 0 评论 -
[算法课]硬币称重
文章目录题目来源:网络算法标签:分治策略思路注明:题目代码题目来源:网络算法标签:分治策略关于硬币:关于一个硬币的问题。如果有16个硬币,都是一元的 重量是6g,其中有1个是假硬币重量是5g,要求找出假的那个?模仿实现 :(1)需要一个数组 int a[17];(2)所有数组一开始全部给初始值6(3)利用随机函数 生成标号i 范围在1-16之间 a[i]=5(4)利用分治法方法 ...原创 2020-04-28 20:33:51 · 1542 阅读 · 0 评论 -
[算法课]图选数字
题目来源 网络算法标签 递归题目描述在一个由 n 行 m 列的方格组成的地图上,每个方格上有一个数,你要取出一些数,使得他们的和值最大。但是有一个条件,你选取的数中,任意 2 个数所在的方格都不能相邻。2 个方格相邻就是指他们共享一条边。48, 30, 39, 87,48, 91, 90, 22,36, 60, 41, 28,49, 96, 37, 88,87, 71, 96,...原创 2020-04-14 22:07:21 · 1168 阅读 · 6 评论