算法
文章平均质量分 92
算法基础
PikaVanderbilt
这个作者很懒,什么都没留下…
展开
-
第五篇——动态规划
动态规划目录动态规划背包问题背包问题完全背包问题多重背包问题I多重背包问题II分组背包问题线性DP数字三角形最长上升子序列I最长上升子序列II最长公共子序列最短编辑距离编辑距离区间DP石子合并计数类DP整数划分数位统计DP计数问题状态压缩DP蒙德里安的梦想最短Hamilton路径树形DP没有上司的舞会记忆化搜索滑雪背包问题背包问题核心套路优化一般就是优化状态转移方程01背包特点:每个物品仅能使用一次重要变量&公式解释f[i][j]:表示所有选法集合中,只从前i个物品中选,并且总体积原创 2021-05-20 09:44:38 · 143 阅读 · 0 评论 -
第三篇——搜索与图论
DFS排列数字n皇后问题算法一:#include <iostream>using namespace std;const int N = 20; // bool数组用来判断搜索的下一个位置是否可行// col列,dg对角线,udg反对角线// g[N][N]用来存路径int n;char g[N][N];bool col[N], dg[N], udg[N];void dfs(int u) { // u == n 表示已经搜了n行,故输出这条路径 i原创 2021-05-18 21:25:08 · 169 阅读 · 2 评论 -
第二篇——数据结构
数据结构篇单链表#include<iostream>using namespace std;const int N=100010;int idx,head,n[N],ne[N];int a;void add_head(int x){ n[idx]=x; ne[idx]=head; head=idx++;}void add(int k,int x){ n[idx]=x; ne[idx]=ne[k]; ne[k]=idx++;}v原创 2021-05-18 21:22:23 · 176 阅读 · 2 评论 -
第一篇——基础算法
基础算法篇快速排序分治算法都有三步1.分成子问题2.递归处理子问题3.子问题合并分析:基于分治1.确定分界点2.调整区间 左边都小于x,右边都大于x3.递归处理左右两段void quick_sort(int q[],int l, int r){ //递归的终止情况 if(l >= r )return ; int i = l-1,j= r+1,x = q[l + r>>1]; while(i < j){ do i++; while(q[i] &l原创 2021-05-07 22:44:13 · 79 阅读 · 0 评论