- 博客(15)
- 收藏
- 关注
原创 使用稀疏数组保存二维数组
使用稀疏数组保存二维数组 1) 使用稀疏数组,来保留二维数组(棋盘、地图等等) 2) 把稀疏数组存盘,并且可以从新恢复原来的二维数组数 3) 整体思路分析
2022-07-10 22:16:51 138
原创 获取两个字符串中最大相同子串
获取两个字符串中最大相同子串。比如: str1 = "abcwerthelloyuiodefabcdef";str2 = "cvhellobnm" 提示:将短的那个串进行长度依次递减的子串与较长的串比较。 说明: 找出两个字符串中短的那一个,用这个短的去在长的串中找,每次让这个短的串减少一个字符重复这个操作。(每次减少一个字符有两种情况,减去开头位置的字符和减去结尾位置的字符),所以就需要两个指针。 代码如下: public String getMaxSameStri...
2022-01-15 15:35:22 629
原创 获取一个字符串在另一个字符串中出现的次数。
获取一个字符串在另一个字符串中出现的次数。 比如:获取“ab”在 “abkkcadkabkebfkaabkskab” 中出现的次数 说明: 找到字串在主串出现的位置,出现一次计数器加1,在往后找直到查完。 public int getCount(String mainStr,String subStr){ int mainLength = mainStr.length();//主串的长度 int subLength = subStr.length();/...
2022-01-15 15:13:01 318
原创 将一个字符串中指定部分进行反转
将一个字符串中指定部分进行反转,比如“abdcefg”反转为”abfedcg”。 方式一:转换为char[] 说明: 将字符串转换成char[],利用数组下标进行反转 代码如下: /** * * @param str 需要反转的数组 * @param startIndex 开始反转的位置 * @param endIndex 结束反转的位置 * @return */ public ...
2022-01-15 15:03:38 929
原创 分而治之——求最大子序列的和
分治法的运用条件:1.原问题可以分解为若干与原问题的解;2.子问题可以分解并可以求解;3.子问题的解可以合并为原问题的解;4.分解后的子问题应互相独立,即不包含重叠子问题 子序列的最大和只可能出现在三个位置:1、序列的左半部分;2、序列的右半部分;3、序列中横跨左右部分(一定包含中间元素) 1、左半部分:递归调用该函数(左半部分子串),maxLeftSum递归到left==right; 2、右半部分:递归调用该函数(右半部分子串)maxRightSum,递归到left==right; ...
2021-10-28 11:02:39 657
原创 动态规划--------最长公共字符串问题
从磁盘中读取两个文件 将两个序列分别记为X和Y,X序列元素分别为{x1,x2……,xn},Y序列元素分别为{y1,y2,……ym},, 用一个char类型的数组来存放这两个字符串 用一个二维数组arr[][]来存放公共字符串的长度 先给这个数组的行列进行初始化 计算arr的其他元素 如果xi == yj, 则 arr[i][j] = arr[i-1][j-1]+1 如果xi ! = yj, 那么arr[i][j] = 0 记录最长公共字符串的长度lmax 记录最长公共字符串结束...
2021-10-27 18:55:44 378 2
原创 动态规划-最长公共子序列问题
输入:有两个字符串,如:s1=ABCADEDBF s2=ABDCEF 也可以自己输入两个字符串,或者比较两个文件内容的近似度,数据存储在两个文件中,导入到程序中。 输出:两个字符串的最长公共子序列,或输出两篇文件的近似度百分比。 思路: 子序列(一个给定序列中删去若干元素后得到的序列) 公共子序列(给定两个序列X,Y,当另一序列Z 既是X 的子序列,又是Y 的子序列时,就称Z 为X、Y 的公共子序列) 明白上述两个概念后,我们就可以开始搜索最长公共子序列 对于 x[i] 和 y[j...
2021-10-27 17:53:00 231
原创 求解门禁系统问题
问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。 输入格式 输入的第一行包含一个整数n,表示涛涛的记录条数。 第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。 输出格式 输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。 样例输入 5 1 2 1 1 3 样例输出 1 1 2 3 1 思路: 开始输入一个数,表示管理员的记录条
2021-09-20 20:53:29 428 2
原创 归并算法--------归并排序
归并排序算法完全遵循分治模式。 操作: 分解:分解待排序的n个元素序列成各具n/2个元素的两个子序列。 解决:使用归并排序递归的排序两个子序列。 合并:合并两个已排序的子序列以产生已排序的答案。 代码如下: 运行结果: ...
2021-09-20 11:24:07 69
原创 Smith数问题
题目内容:若一个正整数的质因数分解式逐位相加之和等于其本身逐位相加之和,则称这个数为 Smith 数。如 4937775=3*5*5*65837,而 3+5+5+6+5+8+3+7=42,4+9+3+7+7+7+5=42,所以 4937775 是 Smith 数。给定一个正整数 N,求大于 N 的最小Smith 数。 输入格式: 若干个正整数,一行代表一个正整数 N,以输入 0 表示结束 输出格式: 按行输出大于正整数N 的最小 Smith 数 输入样例: 4937774 200 0 输出
2021-09-19 17:49:55 1108
原创 最接近数问题
设计算法找出整数数组a[n](n<=50)中相差最小的两个元素(称为最接近数)的差。 输入格式: 第一行为数组大小n,第二行为n个数组元素,元素之间用空格分开 输出格式: 最接近数的差 输入样例: 5 65 38 26 75 40 输出样例: 2 代码位置: ...
2021-09-19 15:03:54 121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人