//标准的dp模板 class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[][] dp = new int[m][n];//dp[i][j]代表走到第[i][j]格子的最小总和 //初始化第一行和第一列
# 将BASE64转换为图片格式 **服务名: tmk** **服务Git组:hcc-api** ## 代码 ```java public static final String JPG = ".jpg"; public MessageBody<?> generate(GenerateImageRequest request) { String pinyin = PinyinUtil.getPinyin(request.g
kruskal适合稀疏图 定义边结构体 typedef struct { int begin; int end; int weight; }Edge; 算法实现代码 //邻接矩阵转边集数组 void MGraph2EdgeArr(MGraph G, Edge* edge); //找到顶点index的根节点下标返回 int Find(int* parent, int index); //使用克鲁斯卡
Volatile关键字的作用: 预防可见性问题,重排序问题。 Volatile是一种同步机制,比synchronized或者Lock相关类更轻量,因为使用Volatile并不会发生上下文切换等开销很大的行为。 一个变量被修饰成volatile,JVM就知道了这个变量可能会被并发修改。 但是,v
今天编写了用栈实现回文的代码. 代码如下: #include<iostream>using namespace std;const int Maxsize = 100;class stact {public: char data[Maxsize]; int top = 0; void push(char b) { data[++top] = b; } char pop() { return data[top--];
#include<iostream> #include<vector> #include<queue> #include<cstring> using namespace std; const int N = 110; char os[] = {'N', 'S', 'W', 'E'}; int dx[] = {-1, 1, 0, 0, 0}, dy[] = {0, 0, -
int lengthOfLongestSubstring(char* s){ int len=0; int start=0; int end=0; char map[128]={0}; map[(int)*(s+start)]=1; while(*(s+end)!='\0') { // if(map[(int)*(s+end)]==0) // { // map[(int
文章目录 MakeFile的使用一、Linux环境下的编译流程二、静态库与动态库2.1 简述2.2 静态库2.3 动态库2.4 优缺点 三、MakeFile的制作第1个版本第2个版本第3个版本第4个版本第5个版本静态库的MakeFile动态库的MakeFile over MakeFile的使用 一、Linux环境下的编译流程 主
算法记录 LeetCode 题目: 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 思路 算法记录说明一、题目二、分析 总结 说明 一、题目 输入:numCou
一、IntelliJ IDEA 激活码 下边这个 IDEA 激活码失效了的话,请关注微信公众号:Java团长,然后发送“ 激活码 ”即可获取最新且有效的。 1STL5S9V8F-eyJsaWNlbnNlSWQiOiIxU1RMNVM5VjhGIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJh
#include<iostream>#include<queue>#include<string>using namespace std;int main(){ queue<char>S1; queue<char>S2; string s; getline(cin,s); for(int j=0;j<s.length();j++){ if(s[j]==' '){ for(int m=j;m<s.lengt
所谓贪心算法,就是每次操作保证都是局部最优解,以至于最终的结果是全局最优解。 习题1:455.分发饼干 使用贪心算法,关键在于找到贪心策略,即每一步操作都是局部最优解。 由题可知,要尽可能满足多的孩子,只要给胃口值最小的孩子分配能让他满足的最小尺寸的饼干,这就是本题的贪心策略
【1002】 A+B for Polynomials (25 分) 1 //1002 A+B for Polynomials (25 分) 2 #include<iostream> 3 #include<iomanip> 4 using namespace std; 5 double a[1001] = { 0 }; 6 int main() { 7 int k,n,count=0; 8 double x; 9 int group
5.流程控制 5.1if语句 score := 91 if score >=90 { fmt.Println("90+") } else if score < 80 { fmt.Println("80+") } else { fmt.Println("harder") } } 这上下两种写法, 有区别, 和其他语言一样,可以想象,下面的写法中的score不能被外面引用 if score := 91; sco
魔板 割点: void Tarjan(int u,int lst) { dfn[u]=low[u]=++Time; st[++tp]=u; for(int i=head[u];i;i=nxt[i]) { int v=to[i]; // int k=i,p=lst^1; if(i==(lst^1)) continue; // printf("!%d %d\n",u,v); if(!dfn[v]) { Tarjan(v,i); if(!mark[i]&a
一、运算符的重载、拷贝构造、临时对象优化 假如有个叫Complex的类,下面是他的加法重载 Complex Complex::operator+ (const Comples &x) { Complex tmp; tmp._real=_real+x._real; return tmp; } 此处多了一次拷贝构造,临时对象优化的话可以如下 Complex Complex::
循环不变量 public static<E> int search(E[] arr, E target){ /** * 循环不变量,就是在循环中始终遵守的原则 * 因为在arr[0...i-1]中没有找到目标,所以才继续循环 * 这个arr[0...i-1]就是循环不变量,在写循环时一定要清楚循环不变量是什么 */ for (int
1.快速排序的思想 快速排序是对冒泡排序的一种改进 基本思想(递归):通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小(基准),然后再按此方法,对这两部分数据分别进行快速排序。 2.快速排序的时间复杂度O(nlogn) 3.快速排序的代码实现 packag
暴力出全排列然后求出这种放油的顺序得到的覆盖面积,求所有覆盖面积的最大值,实际做的时候ans保存的是所有半径的平方的和的最大值。 在放一个油滴A的时候,需要和之前放下的油滴B一一比较,如果A和B的距离小于B的半径,那么放不了,否则可能的半径为\(r(A)=dist(A, B)-r(B)\),和所有点比较后
vector<int> cnt(26); n=s1.length(); for(int i=0;i<n;i++){ ++cnt[s1[i]-'a']; } s1是字符数组,s1[i]-'a'是为了将a变成0,b变成1,c变成2. cnt用于统计每个字母在s1中出现的次数。 ++cnt[s1[i]-'a'] s1[i]是一个字符,递增与该
我的第十一次LeetCode周赛 心情第一题(增量元素之间的最大差值)第二题(网格游戏)第三题(判断单词是否能放入填字游戏内)第四题(解出数学表达式的学生分数) 心情 题目在此 ~~补题中
最小生成树 Prim算法 算法思想:从图中任意取出一个顶点,把它当成一颗树,然后从与这棵树相连接的边中选取一条最短的(权值最小)的边,并将这条边及其所连接的顶点并入到当前树中。 生成树生成过程 候选边长的算法:此时树中只有0这个顶点,与0相连接的顶点分别为1、2、3长度分别为5、1、2这
1.1数据类型 1.1.1数据存储 程序 : 一堆命令的集合,一般是个可执行文件 1 数据想要运算,必须先存储 2 存储方式 内存 : 两端无限延伸的线 硬盘 : 螺旋线 3 存储单位 Bit = 比特 = 位 Byte = 字节 = 8bit -128 ~127 为了保存正负数,只能丢失一半精度,最高位作为符号位 1 表示负
一.变量 交换变量需要引入第三个量,临时变量 二.复合赋值 算术运算符和赋值运算符结合形成复合赋值运算符 “+=”,“-=”,“*=”,“/=”,“%=” 注意两个运算符之间不要有空格 递增运算符:“++”,“--” 三.前缀后缀 “++”和“--”可以放在变量之前,称为前缀;放在变量之后称为后缀。
LeetCode - 剑指 Offer 47. 礼物的最大价值 题目描述分析代码总结 题目描述 难度:中等 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个