
算法
文章平均质量分 79
跌跌撞撞的编程之路
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++中的结构体指针作为函数参数,不会修改实参的值的问题。
最近博主在学c++,琢磨着用c++写个排序二叉树,被c++蹩脚的语法折腾得不要不要的,最要命的地方就是我将main函数里面的结构体传递给函数的时候,在函数里面做的修改不会使得main函数里的实参也变化,见鬼了,讲道理不是指针传递会修改的吗,经过一番折腾之后博主发现,当结构体指针传递给函数时,会拷贝一份指针的值,但是函数内部的指针和函数外部的指针并不是指向同一个引用的,所以才会使得函数里面改变了,但...原创 2018-10-22 16:23:02 · 5788 阅读 · 11 评论 -
蓝桥杯 历届试题 危险系数 深度搜索java代码实现
题目如下:这个题说实话博主我折腾了两个晚上,因为图论知识的缺乏,后来在中国大学mooc上的浙大的数据结构课程上看了一点,想到了解法,一开始我走向了用求割点的方法,但是我没有做出来,因为学到的割点算法求的是整个网络中的割点,本题求的是两个精确点的割点,不好解决,那么我们换一个思路,设置一个数组,保存每个节点在所有路径方案上出现的次数,先通过深度遍历的方式遍历从起点到终点的所有路径,找的时候给所有能够...原创 2018-05-15 22:49:48 · 761 阅读 · 0 评论 -
2017年蓝侨杯省赛javaB组第7题 日期问题
题目如下 : 7,标题:日期问题小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。 比如02/03/04,可能是2002年03月...原创 2018-03-27 20:33:18 · 375 阅读 · 0 评论 -
LCS 解决两个字符串中最长公共子字符串的问题 java实现
问题如下 : 给定两个由整数组成的字符串,定义公共字符串为在两个字符串中取得两个任意N项,这N项在两个字符串中顺序相同,但是这N项不必在字符串中连续,只需要顺序相同即可,要你设计一个程序,输入两个字符串,输出最大子字符串的元素数量 解析:可以这么考虑,设两个字符串为datas1(n项),datas2(m项),设置一个二维数组n*m的max保存在当datas1取第i项,datas2中取...原创 2018-03-26 19:45:56 · 642 阅读 · 0 评论 -
动态规划之LIS最长上升子列问题 java实现
题目如下 : 在一个子串中任意取N项,要求这N项是递增的,求出这个串中这样的N的最大值,注意这样的最长子列不一定是唯一的,例如在 2 1 5 3 6 4 6 3 中就有1 3 4 6 和2 3 4 6两种,都是4。 本题可以这么考虑,可以从头开始往后求,设置一个一维数dp组来保存以每一项为结尾的最长子列数目,第一项的肯定是1,后面的第i项只要往前扫描,假如第j项值比我第i项的值小或者...原创 2018-03-26 18:45:54 · 372 阅读 · 0 评论 -
广度优先搜索 迷宫 问题 java实现
题目如下 : 本题采用广度优先搜索解决,广度优先搜索相对于深度优先搜索我觉得较为容易理解,因为不用递归和回溯,用循环就可以解决,广度优先搜索的有点在于扫描搜索树的顺序是从根节点往下一层一层的搜索,搜索在求解最优解的时候比深度有优势,因为深度要求最优解的话需要遍历所有结果才能得出,但是广度优先搜索扫描到的第一个结果就是最优结果,具体的代码如下: import java.util.*;cl...原创 2018-03-25 21:03:24 · 1231 阅读 · 1 评论 -
深度优先搜索解决 踏青问题 java实现
题目如下 : 本题用深度优先搜索能很容易的解决,首先,定义一个char类型二维数组保存地图,为了防止在判断的时候报arrayindexoutofbound错误我故意多放了两行两列,赋值为'?',代表边界,然后从最开始的位置开始遍历这个地图,每当遍历到草丛的时候就用搜索将这个草丛能够直到达的草丛设置为'!'代表已经有人能够到达这个草丛了,搜索完成之后result+1,代表这块草地需要一个人,...原创 2018-03-23 20:40:07 · 779 阅读 · 0 评论 -
深度优先搜索 走迷宫 java实现
题目如下 : 本题我采用深度优先搜索的方式解决,建立一个二维的int类型数组,定义其中的1代表起点,2代表可以走的地方,3代表不可以走的地方,4代表终点,其中由于在搜索的时候有上下左右四个方向,为了防止做判断的时候报ArrayIndexOfBoundsException,所以保存地图的二维数组我故意多了两行两列作为边界,值设置为0,然后定义一个函数 dfs(int x,int y)代表搜索这...原创 2018-03-23 20:13:12 · 2254 阅读 · 0 评论 -
求字符串中最长的回文串 java实现
题目如下 : 这一题是比较简单的,直接用暴力破解就可以,但是如果直接枚举其中的所有回文串很浪费性能,也很粗糙,仔细想想,回文串的特点是从中间往两边是对称的,那么我们可以直接遍历字符串中的每一个位置,求出以每一个位置为中心的回文串最长是多长,取这些最长回文串的长度就是整个字符串中最长的回文串的长度了,代码如下import java.util.*;public class Seven { ...原创 2018-03-22 21:23:20 · 3233 阅读 · 2 评论 -
广度优先解决一维坐标移动问题java实现
题目如下 : 这题可以用广度优先搜索的算法来解决,首先,没移动一次有三个选择,给出起始点和最终点,那么我们只需要枚举出全部的解决方案,然后比较出最短的方案就可以了,但是这样很浪费时间空间,复杂度很高,实际上用不了,而搜索树可以简化搜索,广度优先是从搜索树从上往下扫描的,那么我在搜索的时候建立一个保存这个位置是否到达过的标记,用一个长度为n的一维数组来保存,因为我在入队的时候,到达相同位置,第...原创 2018-03-09 18:37:09 · 590 阅读 · 0 评论 -
分治法之快速排序 (java实现)
快速排序: 我这里用了递归的方式完成了快速排序,快速排序是:首先用第一个元素作为基准,定义一个变量i指向它,定义一个变量j指向尾部,先从后往前扫描,遇到比基准小的就让i 和 j所指向的元素互相调换位置,然后再从i往后扫描,遇到比基准大的就让i 和 j所指向的元素互相调换位置,再从j往前扫描,依次类推,直到i和j指向同一个元素之后,这个元素就是基准值,并且前面的数字都比它小,后面的数字都比它大...原创 2018-03-01 16:32:10 · 1995 阅读 · 0 评论 -
回溯法求解五人分书问题java实现
现在有五个人,五本书,每个人喜欢的书籍不一样,每个人可能喜欢多本书籍,编写一个程序,输入为这五个人喜欢的书的情况,为一串以空格隔开的0和1,1代表喜欢,0代表不喜欢,每个人有五个数字,求满足所有人的方案,输出这些方案输入如下 : 0 0 1 1 01 1 0 0 10 1 1 0 10 0 0 1 00 1 0 0 1代码如下 : import java.util.*;public cl...原创 2018-02-22 19:49:01 · 910 阅读 · 0 评论 -
分治法之归并排序
归并排序的意思是把一个需要被排序的数组不停的对半分,一直分到每一个部分都只有一个元素,然后再把这些元素按照原来分的时候的情况往回合并,合并的时候将两个部分从小到大排序好再合并,这样等到最后一次合并的时候,合并完成的数组就是已经排序好的数组了,我的代码使用了递归,难点在于递归的设计,我是这么设计的:public static void mergeSort(int[] arr,int low,int ...原创 2018-03-01 14:28:02 · 283 阅读 · 0 评论 -
回溯法解决方格填数问题java实现
题目:填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案? 这题应该用回溯法解决,设置一个二维数组,为了方便后面判断某一个格子中的数字是否会和其他数字相连,这题在设置二维数组的时候最好给这个方格四周再加上一排,并且设置所有的方格中的数字为-9,即设置一个长为6,宽为5的二维数组,然后从[1][2]的位置开始搜索,先处理每一排,一排处理完成之后处理...原创 2018-02-27 20:59:38 · 1586 阅读 · 0 评论 -
回溯法解决素数环问题java实现
素数环问题: 输入正整数n,把整数1,2,3……,n组成一个环,使得相邻两个整数之和均为素数,输出所有方案,注意同一个环应恰好输出一次.n<==16 样例输入: 6 样例输出: 1 4 3 2 5 61 6 5 2 3 4 回溯法解决素数环问题是比较简单的,我设计了一个递归函数,函数的功能是: 在不停的尝试结果数列中的下一个,假如尝试到最后一个还可以放置数字的话,就得到一种解决方案并输出...原创 2018-02-27 20:01:29 · 2980 阅读 · 0 评论 -
递归+回溯法解决八皇后问题(java实现)
八皇后问题:在一个8*8的棋盘上,放置八个皇后,使得八个皇后之间不能互相攻击,(皇后不能互相攻击的条件是两个皇后之间寂不在同一列或者同一行也不在同一条正斜线或者反斜线上)算法:我用了回溯+递归解决了这题,首先定义一个二维数组保存棋盘,都初始化为0,定义0表示可以放置皇后,然后写一个递归函数,函数的功能是不停的尝试下一行,尝试某一行的时候,假如这一行有位置可以放置的话,就吧这个位置的值设置为9,因为...原创 2018-02-26 11:14:58 · 2073 阅读 · 0 评论