这学期的算法作业就存这里面吧
里面都是代码,有些穿插了注释
但是想看完整的讲解还是去我的博客找吧
新增getReciprocal方法 求单链表中倒数第n个结点
悲剧的文本
你有一个破损的键盘。键盘上所有的键都可以正常工作,但有时候Home键或者End键会自动按下。
你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开。当你打开显示器后,
展现在你面前的是一段悲剧文本。你的任务是在打开显示器之前计算出这段悲剧文本。
输入包含多组数据。每组数据占一行,包含不超过100000个字母、下划线、字符“【”或者“】”。
其中字符“【”表示Home键,“】”表示End键。输入结束标志为文件结束符(EOF)。输入文件不超过5MB。
对于每组数据,输出一行,即屏幕上的悲剧文本。
博客:滑技工厂——破损的键盘(悲剧的文本)Java UVa11988
给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。
例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。
整数划分问题 博客:滑技工厂——整数划分的递归实现算法,并输出所有划分(Java)
汉诺塔问题
递归与非递归的二分查找
寻找一个数组中最大数、最小数、第二大数、第k小数
我着实没看懂这道题 是一个方法实现还是分别几个方法,我就按照后者吧
在一个2^k^×2^k^(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4^k^种,因而有4^k^种不同的棋盘。
在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠。
- 用到多少个L型骨牌
- 具体的覆盖情况
分治情况
博客:滑技工厂——棋盘覆盖问题
分治
博客:滑技工厂——给定平面上N个点的坐标,找出距离最近的两个点(Java)
博客:滑技工厂——矩阵连乘问题的递归、自底向上、自顶向下(Java)
dp[i] = max{ dp[i-1] + A[i] , A[i] } (正数+正数肯定更大,正数+负数也一定比Ai大,负数+正数/负数+负数那肯定Ai更大,因此选择Ai这种情况只是为了防止负数越加越大的情况,及时止损重新开始一个子段) 每次得到的dpi都和max比较,取最大的值作max 上一位的子段和加自己 如果加出来的和还没自己大,那说明自己要重开一个子段,自己做子段的第一个元素
今天爆肝更新
问题:有n项任务,每项任务加工时间已知,从0时刻开始陆续安排到一台机器上加工, 每个任务的完成时间是从 0 时刻到任务加工截止的时间。 求:总完成时间 最短的安排方案(所有任务完成时间之和)。