![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Toky丶
在读博士生,主要研究方向为医疗机器人的视觉引导,其他例如三维计算机视觉,SLAM,深度学习啥都略懂。
展开
-
算法题目打卡:Ques20201025
最大子段和问题给定整数序列,求该序列形如k=ijak的子段和的最大值,1)已知一个简单算法如下:试分析该算法的时间复杂性。答:时间复杂度为O(n^2)2)试用分治算法解最大子段和问题,并分析算法的时间复杂性。算法思路需要在序列中找到一段最优序列,将序列分为和,与最邻近点对问题类似,最优序列所在的位置有以下3种情况:分治法代码#include<iostream>#include<cstdio>#include<map>..原创 2020-10-25 23:09:33 · 519 阅读 · 0 评论 -
算法题目打卡:Ques20201024
问题1描述你的目标是让机器人走出迷宫。机器人面朝北,开始位置是在迷宫中间,你 可以让机器人转向面朝东、南、西、北。你可以让机器人向前走一段距离,在撞墙之前它会停步。a. 将问题形式化,状态空间有多大?形式化如下:状态:状态由机器人的位置和朝向所确定,当下一个位置只有4个朝向可选,可能的状态数为4,再下一次同样有4个朝向可选,选择朝向与前进的行动是连续的。初识状态:机器人面朝北。转移模型:面朝任何一个方向都可向前走,除非即将撞墙。目标测试:测试当前位置是否走出迷宫。路径消耗原创 2020-10-24 14:49:26 · 1631 阅读 · 0 评论 -
算法题目打卡:Ques20201020
问题描述Q1:设有一条边远山区的道路AB,沿着道路AB分布着n所房子。这些房子到A的距离分别是d1,d2,…,dn(d1<d2<…<dn)。为了给所有房子的用户提供移动电话服务,需要在这条道路上设置一些基站。为了保证通讯质量,每所房子应该位于距离某个基站的4Km范围内。设计一个算法找基站的位置,并且使得基站的总数最少。算法贪心策略是,从第一个房子开始取d1+4的距离,检测下一个房子有没有被覆盖,若没有,则在下一个房子如d2开始再取d2+4。若已经覆盖,则跳过,检测下一个,直到.原创 2020-10-20 16:51:52 · 3047 阅读 · 4 评论 -
算法题目打卡:Ques20201019
今日收获tips原来不在main函数中调用排序sort函数(比如想要封装在自定义的Ques20201019中) ,老是报下面的错:“void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个解决方案是将自定义的比较函数变为静态的static问题1问题描述有n个进程p1,p2,..,pn,进程pi的开始时间为s[i],截止时间为d[i]。可以通过检测程序Test来测试正在运行的进程,Test每次测试时间很...原创 2020-10-20 09:28:34 · 1262 阅读 · 0 评论 -
算法题目打卡:Ques20201017
1. 单机作业调度(n个顾客等待同一服务)问题描述设有n个顾客同时等待同一服务,顾客i需要的服务时间为t,1<=i<=n,应如何安排n个顾客的服务次序才能使总的等待时间达到最小?总的等待时间是各顾客等待服务的总和。试给出你的做法的理由。使用贪心策略,将服务所需时间按从小到大进行排列,优先安排服务时间短的。证明(交换论证)...原创 2020-10-17 15:24:09 · 431 阅读 · 0 评论 -
算法题目打卡:Ques20201012
一、活动安排问题1. 问题描述活动安排问题,一个场地,安排尽量多的活动。2. 代码// 活动安排// 算法描述:①按照结束时间从大到小排序-->②优先安排结束时间早的-->③判断下一个活动的相容性的方法是f[i]>s[j]// 关键词:贪心#include <iostream>#include <vector>#include <algorithm>using namespace std;struct Activ.原创 2020-10-12 23:11:00 · 265 阅读 · 0 评论 -
算法题目打卡:Ques20201011
问题1 最接近点对问题(1) 1维① n最接近点对问题,q一维最近点对问题,直线上的n个点采用排序+扫描方法,时间复杂度为O(nlogn)。②蛮力算法(不推荐):两两比较, T(n)=(n-1)(n-2)/2=O(n2)。③分治时间复杂度为O(nlogn)主要思路:将一排仅有x坐标的点划分为两部分(快排中的partition),划分的数m=(m1+m2)/2,m1和m2是数组中的最大值和最小值,类似于中位数。然后再划分的两边进行查找点对,这时可能会碰到一种情况..原创 2020-10-12 15:07:55 · 616 阅读 · 0 评论 -
算法打卡Ques20201009
1. 问题描述在Internet上的搜索引擎经常需要对信息进行比较,比如可以通过某个人对一些事物的排名来估计他对各种不同信息的兴趣。对于不同的排名结果可以用逆序来评价他们之间的差异。考虑1, 2, …, n的排列i1, i2, …, in,如果其中存在ij,ik,使得j<k但ij>ik,那么就称(ij, ik)是这个排列的一个逆序。一个排列含有逆序的个数称为这个排列的逆序数。例如:排列2 6 3 4 5 1含有8个逆序:(2, 1),(6, 3),(6, 4),(6, 5),(6, 1),(原创 2020-10-12 15:07:10 · 465 阅读 · 0 评论 -
算法题目打卡:Ques20201007
时间复杂度为O(n)的选择问题1. 问题描述特别简单的问题,从一组数组中选出第k大的元素A[i],最容易想到的办法时间复杂度为O(n^2),考虑快排中的划分法(分治思想)2.试用划分法图1 复杂度较高的划分法伪代码(来源:国科大刘老师PPT)对应代码:// 试用划分法 int PartSelect(vector<int>& A, int n, int k) { int m, r, j; m = 1; r = n + 1; A[n + 1] =原创 2020-10-07 21:38:25 · 534 阅读 · 0 评论 -
算法题目打卡:Ques20201008
1. 问题描述设S是n个不等的正整数的集合,n为偶数,给出一个算法将S划分为子集S1和S2,使得|S1|=|S2|且达到最大,即两个子集元素之和的差达到最大。(要求:T(n)=O(n))。2. 解题思路可参考选择问题(选出A[1,…n]中第k小的元素),所使用的划分法(选择问题的复杂度下限是O(n))请参见我的另一篇文章复杂度为O(n)的选择问题解法,在本问题中选出第n/2小的元素(类似于中位数m),然后再利用该中位数使用快排中的划分函数partition,小于等于中位数m的元素划分到S1.原创 2020-10-07 23:17:40 · 1688 阅读 · 0 评论 -
算法题目打卡:Ques20201004
1. 单峰元素查找可采用二分查找的思路,优先搜索中间元素,判断其是否大于左右两边的元素,若是,直接返回该元素。否则,判断该元素与相邻元素的上升或下降趋势,若上升,保留右半边。若下降,保留左半边,继续重复上述过程,直到元素数小于3停止递归调用。//Q4. 给定含有n个不同数的数组L={x1,x2,…,xn},如果L中存在xi,使得x1<x2<…<xi-1<xi>xi+1>…>xn,// 则称L是单峰的,并称xi是L的峰顶。假设L是单峰的,设计一个优于O(n)原创 2020-10-05 17:10:24 · 2856 阅读 · 0 评论 -
找坏硬币
问题描述在n(n>=3)枚硬币中有一枚重量不合格的硬币(过轻或过重),如果只有一架天平可以用来称重且称重的硬币数没有限制,设计一个算法,找出这枚不合格的硬币,使得称重的次数最少(优于O(n))。(提示:分成n/3或n/4份,至少两份数量相等)思路借鉴二分法的思想,不过是分成3堆,其中两堆个数一致,另外一堆可以不一致。不管是奇数还是偶数个硬币,(被3整除最好)都可分成大致相同的3堆,比较两堆一致的,若不相等,说明坏硬币在这两堆中。若相等,说明在第3堆中。重复操作,直到只剩2个硬币。.原创 2020-10-04 22:31:02 · 1816 阅读 · 0 评论 -
KMP算法的next数组求解步骤
主串 s="AABBCBBABBCACCD"模式串 t="BBABBCAC"第一步:求解出初步的next数组(1)固定前两个 next[0]=-1,next[1]=0(2)从模式串t[2]开始,这里是'A',倒序往前面看,如这里第二个‘B’,这个‘B’为它的长度为1的子串,看到第一个字母为止。比较这些子串与第一个字母开始的子串有没有匹配的,如这里的长度为1的子串与第一个字母t[0]...原创 2019-02-27 14:16:58 · 1245 阅读 · 0 评论