
算法笔记
文章平均质量分 67
_Lichtung_
stay hungry, stay foolish
展开
-
动态规划总结
胡凡 曾磊《算法笔记》第十一章总结1、动态规划介绍1、定义动态规划(Dynamic Programming,DP),解决最优化问题。将一个复杂问题分解为若干个子问题,通过综合子问题的最优解来得到原问题的最优解。此外,DP为将每个求解过的子问题的解记录下来,这样下次再碰到同样子问题,就可以直接用之前的结果,而不用重复计算。2、满足条件——重叠子问题+最优子结构重叠子问题:如果一个问题可以被分为若干个子问题,且这些子问题会重复出现最优子结构:一个问题可以通过子问题的最优解构造出原问题的最优解原创 2021-06-04 19:52:52 · 313 阅读 · 0 评论 -
最短路径算法(Dijkstra、Bellman-Ford、SPFA、Floyd)
《算法笔记》笔记解决最短路径问题的常用算法有Dijkstra、Bellman-Ford、SPFA、Floyd算法。1、Dijkstra(1) 解决单源最短路问题。即给定图G和起点s,通过算法得到S到达其他每个顶点的最短距离。只能应对所有边权都是非负数的情况,Dijkstra(G,d[],s){ fill(d,d+N,INF); d[s] = 0; for(循环n次){ u = 使d[u]最小的还未被访问的顶点的编号; 记u已被访问; for(从u出发能到达的所有顶点v){原创 2021-06-02 16:29:58 · 469 阅读 · 0 评论 -
OJ刷题总结
1、设定字符串长度时要比规定长度至少大1不能说字符串最大长度10000,然后你就设定char str[10000],因为字符串的最后一位是’\0’,所以必须给’\0’留位置。2、取模运算(a+b)%e = (a%e+b)%e(a+b+c)%e =( (a%e+b)%e+c)%e避免数字加和过大,可以在计算中途就进行取模运算3、输出格式...原创 2021-05-12 19:45:35 · 880 阅读 · 0 评论 -
二分法
《算法笔记》学习笔记1、基本二分查找1、二分查找时一种基于有序序列的查找算法,时间复杂度为O(logn)。#include<stdio.h>//A[]为严格递增序列int binarySearch(int A[],int left,int right,int x){ int mid; while(left<=right){ mid = (left+right)/2; if(x==A[mid]){ return mid; }else if(x>A[mi原创 2021-05-05 16:42:24 · 131 阅读 · 0 评论 -
递归法求解全排列、N皇后
《算法笔记》第四章学习笔记1、全排列问题一般把1~n这n个整数按照某个顺序摆放的结果称为这n个整数的一个排列,全排列指这n个整数能形成的所有排列。如n=3时,全排列为(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。全排列问题求解思路:按照位数去递归。设定数组P,用来存放当前的排列;散列数组hashTable,当整数x已经在数组P中时hashTable[x]为true。当递归到第index位时,如果index等于N+1,那么输出数组P的每一位;否原创 2021-05-05 10:36:04 · 152 阅读 · 0 评论 -
C++sort函数的使用
《算法笔记》笔记1、sort()排序函数简介sort函数的使用必须加上头文件#include< algorithm>和using namespace stdsort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填));2、比较函数若比较函数不填,则默认按照从小到大的顺序排序。若想要从大到小排序,则可这样设定比较函数cmp:bool cmp(int a,int b){ return a>b;//可以理解为当a>b时把a放到b的前面}sort原创 2021-05-04 21:22:40 · 139 阅读 · 0 评论 -
C/C++基本知识(二)
《算法笔记》第2章笔记(二)1、给整个数组都赋初值0:int a[10] = {0};int a[10]={};使用memset函数,memset建议只用来赋值0或-1。用法:添加string.h头文件,之后memset(数组名,值,sizeof(数组名))#include<stdio.h>#include<string.h>int main(){ int a[5] = {1,2,3,4,5}; memset(a,0,sizeof(a)); return 0;原创 2021-05-04 12:31:45 · 119 阅读 · 0 评论 -
C/C++基本知识
《算法笔记》(胡凡 曾磊)第2章笔记1、int型:绝对值在 109 范围以内的整数或者32位整数2、long long型: 1018 以内整数或者64位整数3、浮点数:float为单精度,double为双精度,一般使用浮点数时,都使用双精度double存储。4、字符变量:char c = ‘e’小写字母比大写字母的ASCII码值大325、转义字符:\n表示空行,\0代表空字符NULL,其ASCII码为0。6、强制类型转换: (新类型名)变量名double r = 12.56;(int)r原创 2021-05-03 23:06:15 · 171 阅读 · 0 评论