算法学习
文章平均质量分 78
JiangNanMax
给生活添砖Java!
展开
-
算法笔记 - 矩阵连乘问题 动态规划
算法笔记 - 矩阵连乘问题 动态规划Intro下午课上提到了矩阵连乘,这是个经典的动态规划问题,复习一下。主要就是自底向上的思路,枚举每个区间,子问题的最优解最后得到整体最优解(注意枚举的常见写法)。状态转移方程:m(i,j)={0i=jmini≤k<j{m(i,k)+m(k+1,j)+ai(x)∗ak(y)∗aj(y)}i<jm(i, j)=\begin{cases} & 0 & i=j \\ & min_{i \leq k < j原创 2020-12-25 17:07:02 · 1453 阅读 · 0 评论 -
C库函数 - sscanf和sprintf的使用
C库函数 - sscanf和sprintf的使用Intro今天遇到要从字符串中解析出整数的情况,马上想到的是istringstream,然后又回忆起来四年前刚学C那会儿经常用sscanf函数,是个挺规整的函数,于是重拾了一下。sscanfsscanf函数用于从字符串读取格式化输入,简单来说,就是解析出字符串中的值存在变量中,该函数的声明如下:int sscanf(const char *str, const char *format, …)实例#include <iost原创 2020-12-22 20:19:42 · 1007 阅读 · 2 评论 -
codevs 1488 GangGang的烦恼 大数阶乘
codevs 1488 GangGang的烦恼 大数阶乘传送门:http://codevs.cn/problem/1488/使用大数阶乘的模版即能A该题,原理不难理解,就是用数组来存储阶乘的结果,主要就是按位进行处理,包括进位的处理更多的大数计算见另一篇博客:https://blog.csdn.net/J__Max/article/details/79747342代码如下:...原创 2018-10-24 11:23:55 · 3751 阅读 · 0 评论 -
Problem 01. two-sum
Problem 01. two-sum题目描述给定一个整数数组 nums 和一个目标值 target ,请你在该数组中找出和为目标值的两个整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15],target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 ...原创 2018-11-26 11:04:23 · 5493 阅读 · 0 评论 -
Problem 02. add-two-numbers
Problem 02. add-two-numbers题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按逆序的方式存储的,并且它们的每一个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。可以假设除了0之外,这两个数都不会以0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6...原创 2018-11-26 12:37:32 · 5559 阅读 · 2 评论 -
Problem 03. longest-substring-without-repeating-characters
Problem 03. longest-substring-without-repeating-characters题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入:“abcabcbb”输出:3解释:因为无重复字符的最长子串是 “abc”,所以其长度为 3示例 2:输入:“bbbbb”输出:1解释:因为无重复字符的最长子串是 ...原创 2018-11-27 22:41:41 · 5482 阅读 · 0 评论 -
Problem 05. longest-palindromic-substring 最长回文子串 枚举方法 动态规划方法 中心扩展方法 马拉车算法
Problem 05. longest-palindromic-substring 最长回文子串 枚举方法 动态规划方法 中心扩展方法 马拉车算法简述最长回文子串问题是一个很经典的问题,也有挺多的解法,且时间复杂度各异。遇到这类题挺多次了, 上学期算法导论课的机考就出现了一道相同的题,当时好像是用动态规划瞎搞就AC了…但后来也没有做总结。。。这里又遇到了这题,肯定不能放过,写一份详细的总结...原创 2019-01-22 21:27:30 · 5248 阅读 · 0 评论 -
最大子矩阵 最大子数组 动态规划
最大子矩阵 最大子数组 动态规划最大子矩阵问题也是动态规划中经典的一道题目(感觉自己到目前为止接触到的只是动态规划的冰山一角,区间dp、数位dp… 还是要花时间深入学习一下的),这里就先总结一下最大子矩阵问题的通用思路以及解法我们先从基础难度讲起,不直接讨论二维矩阵的情况,先来看看一维数组:现假设有一个一维数组 arr[n],要你找出连续的一段数组元素,使其和最大例如,一个...原创 2019-02-28 19:45:13 · 9334 阅读 · 0 评论 -
递归求取数组的最大值、最小值以及数组的和
递归求取数组的最大值、最小值以及数组的和记录几个比较经典的递归求值递归求取数组的最大值int get_array_max(int arr[], int n) { if (n == 1) { return arr[0]; } else { return arr[n - 1] > get_array_max(arr, n - 1)...原创 2019-03-27 08:17:06 · 8501 阅读 · 2 评论 -
codevs 1471 线段 前缀和
codevs 1471 线段 前缀和传送门:http://codevs.cn/problem/1471/这道题就是简单的一维前缀和问题,其中心思想就是:对一个输入的线段,其左端点加一,右端点后一位减一,以此来标记一条线段。最后通过累计前缀和,就能够得到每个点在线段中出现的次数,这个技巧不难理解还有其它的题目类型,比如求二维前缀和、结合差分等,后续有做到这类题再进行记录代码如...原创 2018-10-24 10:26:59 · 3770 阅读 · 0 评论 -
codevs 2022 复仇 快速幂模版题
codevs 2022 复仇 快速幂模版题直接套快速幂的模版即可,变量类型开 long long int 防止上溢出代码如下://// main.cpp// progress//// Created by 江南 on 2018/10/19.// Copyright © 2018年 江南. All rights reserved.//#include &amp;lt...原创 2018-10-24 09:04:18 · 3701 阅读 · 0 评论 -
合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归方法~ListNode* Merge(ListNode* pHead1, ListNode* pHead2){ if(pHead1 == NULL){ return pHead2; } if(...原创 2018-04-22 21:48:01 · 4023 阅读 · 0 评论 -
二叉排序树
class BSTreeNode{public: int data; BSTreeNode *lchild; BSTreeNode *rchild; BSTreeNode(){ lchild=NULL; rchild=NULL; }};class BSTree{public: BSTreeNode *root...原创 2018-04-22 22:06:24 · 3972 阅读 · 0 评论 -
欧拉通路和欧拉回路
无向图是否具有欧拉通路或回路的判断: 欧拉通路:图连通,且图中0个或2个度为奇数的节点。 欧拉回路:图连通,且图中所有节点的度都为偶数。 有向图是否具有欧拉通路或回路的判断: 欧拉通路:图连通,除了两个端点外其他节点的入度等于出度,一个端点入度比出度大1,另一个出度比入度大1;或者所有节点入度等于出度。 欧拉回路:图连通,所有节点入度等于出度。链接:https://w...原创 2018-04-25 23:06:20 · 4259 阅读 · 0 评论 -
求最短路,从s出发的第k小距离
链接:https://www.nowcoder.com/acm/contest/86/H#include <iostream>#include <math.h>#include <sstream>#include <algorithm>#include <string.h>#include <set>#includ...原创 2018-04-26 19:14:08 · 4102 阅读 · 0 评论 -
codevs 1506 传话
网上看到的floyed方法,也学到了这样求解传递闭包。(就是时间复杂度较高)待补充dfs解法。。。#include <bits/stdc++.h>typedef long long int ll;#define PI 3.14159265358979323846#define INF 0x3f3f3f3f#define INFLL 0x3f3f3f3f3f3f3f3fll...原创 2018-05-14 22:32:19 · 4040 阅读 · 0 评论 -
EOJ 3502 密码碰撞
题目已经给出了提示,用哈希求解。解题思路就是枚举每个字符串的的子串,计算其哈希值,存在set中(去重),然后再将各个哈希值的出现次数存储在map中。最后,遍历map,并累计。最后的结果应减去cas数,即减去自己对自己的密码。#include <bits/stdc++.h>typedef long long int ll;#define PI 3.1415926535897932...原创 2018-05-15 13:46:24 · 4396 阅读 · 0 评论 -
POJ 2503 快速排序+二分 / 哈希查找
快速排序+二分:#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#include <deque>#include <vector>#include <que原创 2018-05-22 22:26:28 · 4125 阅读 · 0 评论 -
codevs 1983 等式问题 dfs
codevs 1983 等式问题 dfs传送门:http://codevs.cn/problem/1983/先构造一个数组arr,其中arr[ i ][ j ]表示从第 i 位到第 j 位构成的数字,例如:arr[ 1 ][ 3 ] = 123 。然后在该数组上进行dfs即可其中要注意的一点是:题目中指明第一个数字前没有空格,所以dfs的第一步没有减号的情况具体代码如下:...原创 2018-10-24 08:57:32 · 3729 阅读 · 0 评论 -
字典树
刷了几道字典树的题目,做做总结。。。 HDU1305Immediate DecodabilityTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3779 Accepted Submission(s): 19原创 2017-12-22 19:46:07 · 4069 阅读 · 0 评论