Skip to content

GitHub121380/Homework-AlgorithmAnalysis

Repository files navigation

这学期的算法作业就存这里面吧

里面都是代码,有些穿插了注释

但是想看完整的讲解还是去我的博客找吧

滑技工厂


2020/3/6

更新Node类

新增getReciprocal方法 求单链表中倒数第n个结点

博客:滑技工厂——递归求单链表中倒数第k个结点

2020/3/7

更新BrokenKeyboard类

悲剧的文本

你有一个破损的键盘。键盘上所有的键都可以正常工作,但有时候Home键或者End键会自动按下。

你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开。当你打开显示器后,

展现在你面前的是一段悲剧文本。你的任务是在打开显示器之前计算出这段悲剧文本。

输入包含多组数据。每组数据占一行,包含不超过100000个字母、下划线、字符“【”或者“】”。

其中字符“【”表示Home键,“】”表示End键。输入结束标志为文件结束符(EOF)。输入文件不超过5MB。

对于每组数据,输出一行,即屏幕上的悲剧文本。

博客:滑技工厂——破损的键盘(悲剧的文本)Java UVa11988

更新RotateString类。

给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。

例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。

博客:滑技工厂——字符串移位包含问题

2020/3/8

更新IntegerDivision类

整数划分问题 博客:滑技工厂——整数划分的递归实现算法,并输出所有划分(Java)

更新HanoiImpl类

汉诺塔问题

2020/3/11

更新BinarySearch类

递归与非递归的二分查找

2020/3/13

更新SearchNumbers类

寻找一个数组中最大数、最小数、第二大数、第k小数

我着实没看懂这道题 是一个方法实现还是分别几个方法,我就按照后者吧

棋盘覆盖问题

在一个2^k^×2^k^(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4^k^种,因而有4^k^种不同的棋盘。

在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠

  1. 用到多少个L型骨牌
  2. 具体的覆盖情况

分治情况

博客:滑技工厂——棋盘覆盖问题

2020/3/14

更新BigInteger类multiply递归方法(乘法)

更新了StrassenMutipleMatrix类 矩阵相乘递归实现

2020/3/17

更新MergeSort归并排序的递归和非递归

博客:滑技工厂——归并排序(合并排序)Java

2020/3/19

更新QuickSort随机数元素快速排序的递归

2020/3/20

更新QuickSort快排非递归

2020/3/21

更新自然归并排序和正常递归快排

2020/3/26

更新LinearSelect线性时间选择的第一种——随机元素为基准的线性时间选择

2020/3/27

更新LinearSelect线性时间选择的第二种——利用中位数线性时间选择

博客:滑技工厂——线性时间选择算法(Java)

2020/3/28

更新ShortestDis类 给定平面上N个点的坐标,找出距离最近的两个点

分治

博客:滑技工厂——给定平面上N个点的坐标,找出距离最近的两个点(Java)

2020/4/14

更新Fibonacci类的两种动态规划方法 分别为自底向上和自顶向下

2020/4/17

更新LCS类,求解两个字符串的最大公共子序列长度和最大公共子序列(有瑕疵,目前只能输出一个最大公共子序列)

2020/4/22

更新MatrixMultiply矩阵连乘类,更新递归方法和自顶向下的动态规划方法

博客:滑技工厂——矩阵连乘问题的递归、自底向上、自顶向下(Java)

2020/4/24

更新MatrixMultiply矩阵连乘类的自底向上动态规划方法

2020/4/29

更新最短路径问题中的Dijkstra方法

2020/4/30

更新BestTriangleDivide类——凸多边形最优三角剖分

2020/5/7

更新PackageProblem中的01背包问题

2020/5/9

更新PolygonGame多边形游戏问题

2020/5/22

更新MaxChildParaSum最大子段和及序列的问题

dp[i] = max{ dp[i-1] + A[i] , A[i] } (正数+正数肯定更大,正数+负数也一定比Ai大,负数+正数/负数+负数那肯定Ai更大,因此选择Ai这种情况只是为了防止负数越加越大的情况,及时止损重新开始一个子段) 每次得到的dpi都和max比较,取最大的值作max 上一位的子段和加自己 如果加出来的和还没自己大,那说明自己要重开一个子段,自己做子段的第一个元素

2020/5/23

更新ImageCompress图像压缩问题

博客:滑技工厂——图像压缩问题(Java)

2020/5/24

今天爆肝更新

更新DianLuBuXian类 电路布线问题

更新Johnson类 流水作业调度问题

更新BestBinarySearchTree类 最优二叉搜索树

2020/6/5

更新ActivityArrangement类活动选择问题 选结束时间最早的

博客:滑技工厂——活动安排问题(贪心、Java)

2020/6/7

更新HuffmanGreedy类哈夫曼树的贪心

2020/6/10

更新NormalPackageProblem类一般背包问题

2020/6/11

更新TaskDispatch任务调度类 优先选择短任务

问题:有n项任务,每项任务加工时间已知,从0时刻开始陆续安排到一台机器上加工, 每个任务的完成时间是从 0 时刻到任务加工截止的时间。 求:总完成时间 最短的安排方案(所有任务完成时间之和)。

2020/6/12

更新Kruskal算法 最小生成树

2020/6/13

更新Prim算法 最小生成树

About

用来存储每次算法的作业代码

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published