
数据结构与算法
Tenyearsme
成功唯有积累,没有奇迹!
展开
-
青云的机房组网方案(简单)-Java
青云现在要将 nnn 个机房连成一个互相连通的网络。工程师小王设计出一个方案:通过在 nnn 个机房之间铺设 n−1n-1n−1 条双向的光纤,将所有的机房连接。可以假设数据在两个机房之间的光纤传输需要 111 单位时间。每个机房 iii 有一个初始值 aia_iai,当两个机房的初始值之间互质时,我们认为这两个机房之间的传输性能是非常重要的。请帮小王计算出所有数值互质的机房对之间的传输时间之原创 2016-06-05 12:35:32 · 1180 阅读 · 0 评论 -
马走日棋盘算法
马的遍历问题。在N*M的棋盘中,马只能走日字。马从位置(x,y)处出发,把 棋盘的每一格都走一次,且只走一次。找出所有路径。 输入 N M x y 如 5 5 3 3 5*5的棋盘 马从第3行第3列开始出发 import java.util.Scanner;public class Main { private static int[][] next = new int[][]原创 2016-05-25 13:00:32 · 6042 阅读 · 0 评论 -
深度优先搜索实现迷宫的走法
从起点走到指点的迷宫坐标输出最短的步数!最短路径吧!import java.util.Scanner;/* * 结合DFS实现的 迷宫走法 * * */public class migong { static int p;// 终点x坐标 static int q;// 终点y坐标 static int startx;// 起点x坐标 static int starty;原创 2016-04-23 22:37:55 · 1188 阅读 · 0 评论 -
深度优先搜索思想入门!
深度优先搜索思想原创 2016-04-23 22:29:53 · 772 阅读 · 0 评论 -
POJ2965,递归出来的!
这道题不难,有很多种实现的方法,然而在看了结题报告后,我就看懂了一种!这里贴出java代码仅供参考!import java.util.Scanner;/* * 这一题大意如下: 一个冰箱上有4*4共16个开关,改变任意一个开关的状态(即开变成关,关变成开)时,此开关的同一行、同一列所有的开关都会自动改变状态。要想打开冰箱,要所有开关全部打开才行。原创 2016-04-27 21:47:53 · 432 阅读 · 0 评论 -
广度优先搜索迷宫的最短路径走法!
引用自我的上一篇博客:用DFS实现的走迷宫,这里用BFS再走一遍!感觉最近快迷失在迷宫里面了!可怕。。。不说了上代码,有问题希望大神们指出来!虚心接受!import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;/* * 结合BFS实现的 迷宫走法 * * */publ原创 2016-04-25 23:23:24 · 3881 阅读 · 0 评论 -
深度优先搜索+解炸弹人游戏
深度优先搜索进阶了!原创 2016-04-23 22:52:39 · 831 阅读 · 0 评论 -
归并排序与逆序数
package MyGuiBing;public class GuiBingPaiXu { static int count;//新增 /* * 归并排序+逆序数 * * 与归并排序比较 增加了两行核心代码 * * * 如果ia[j] 成为逆序数 * * */ public static void main(String[] args) {原创 2016-04-10 16:52:08 · 748 阅读 · 0 评论 -
2016"百度之星" - 资格赛(Astar Round1)Problem C --java代码
Problem Description度熊手上有一本神奇的字典,你可以在它里面做如下三个操作:1、insert : 往神奇字典中插入一个单词2、delete: 在神奇字典中删除所有前缀等于给定字符串的单词3、search: 查询是否在神奇字典中有一个字符串的前缀等于给定的字符串Input这里仅有一组测试数据。第一行输入一个正整数N(1≤N≤100000)N (1\leq N\leq 100000)N原创 2016-06-27 12:38:22 · 689 阅读 · 0 评论 -
高精度加法运算-Java语言描述
高精度加法运算,我写的很菜,望见谅咯!import java.util.Scanner;/* * java 高精度加法运算 每个整数的位数小于等于1000位 * * */public class Main { public static void main(String[] args) { // TODO Auto-generated method stub S原创 2016-05-01 11:23:46 · 1194 阅读 · 0 评论 -
POJ3278解题报告
五一快乐!么么POJ3278很难找到原题的中文翻译,都是给的题目大意哎!我是用java写的。BFS搜索,有缺点望指出来。thaks。。import java.io.BufferedInputStream;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public clas原创 2016-05-01 11:12:42 · 853 阅读 · 0 评论 -
POJ-2253-最短路径变形-java语言描述
做ACM题最大的困难不是不会敲代码!而是理解题意!看了很多人的帖子,才明白过来是什么意思!看了博主的才理解什么意思我再说一下我的理解:求出所有1到2的所有通路,每条通路都有一个最大的子路径,这些子路径中最小的那个就是所求的值!这是一个无向图,每个顶点都是两两连通的,所以在建图的时候,邻接矩阵的时候只有对角线为0。我用的是Floyd算法,进行的!下面看代码:/原创 2016-05-03 18:13:20 · 814 阅读 · 0 评论 -
POJ3259-JAVA语言描述-Bellman_Ford算法
读懂题意真难,时间都浪费在理解题意上面了。然后,发现,,这又是一个水题!分分钟撸完了!!!!引用这里的解释吧我就不多加赘述了!给你们解释下输入案例数据也许会更清晰的哟!下面看代码,注释很详细!!若有bug,不足,望悉心指出,thanks!!!!import java.io.BufferedInputStream;import java.util.Scanner;/原创 2016-05-02 12:51:49 · 814 阅读 · 0 评论 -
归并排序-java语言描述
归并排序求逆序数归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]中void Me原创 2016-05-21 22:38:55 · 602 阅读 · 0 评论 -
二叉排序树-java语言描述
什么是二叉排序树:二叉排序树或者是一颗空树,或者具有以下性质的二叉树:若它的左子树不为空,则左子树上的所有节点的值都小于他的父节点的值 ;若它的右子树不为空,则右子树上的所有节点的值都大于他的父节点的值;它的左右子树也分别为二叉排序树;import java.io.BufferedReader;import java.io.IOException;import java.io.Input原创 2016-05-17 11:53:34 · 623 阅读 · 0 评论 -
堆排序
最近心情烦躁的不行写不出来东西!哎import java.io.BufferedInputStream;import java.util.Scanner;/** * * @类描述:堆 && 实现堆排序 * @项目名称:Aha_suanfa * @类名称:Dui * @修改备注: * @version v1.0 * @Copyright go3c */public class原创 2016-05-16 23:33:50 · 429 阅读 · 0 评论 -
KMP算法的java实现
写的很菜,理解的不是很深刻!贴出来共勉吧!! 先来几个大神的连接 大神一大神二public class Main { private static String par; private static String ori; public static void main(String[] args) { ori = "BBC ABCDABD ABCD E";原创 2016-05-24 17:18:17 · 380 阅读 · 0 评论 -
Fi数列
Fi数列,其中F(0)=7,F(1)=11,F(n)=F(n-1)+F(n-2)n>=2 n<1000000 问Fn的结果是否能被3整除 Sample Input 0 1 2 3 4 5 Sample Output no no yes no no noimport java.util.Scanner;public class Main { public stat原创 2016-05-25 13:04:11 · 475 阅读 · 0 评论 -
连续奇数和
题目描述 任何一个自然数m的立方均可写成m个连续奇数之和。例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 现在让你求111^3中的连续奇数和,若有多组数据,输出开头最小的那组数据的第一个数据!public class Main { public static void main(String[] args) {原创 2016-05-23 22:57:58 · 921 阅读 · 0 评论 -
动态规划之最大矩阵路径
动态规划之求矩阵的最大路径和 或者最小路径也可以原创 2016-04-28 17:14:55 · 3952 阅读 · 0 评论 -
图论最短路径算法-Dijkstra算法-单源最短路径-JAVA语言描述
单源最短路径!这里直接上代码我在代码谢了详尽的注释,若有bug,不足望悉心指出,thanks!import java.util.Scanner;public class dijkstra { // dijkstra 单源最短路径 static int n, m; static int[][] map; static int inf = 999999999; static int原创 2016-05-01 22:44:12 · 831 阅读 · 0 评论 -
Bellman-Ford算法-POJ1806-JAVA语言描述
Bellman-Ford算法的反向利用。可以把初始兑换的货币看成源点,采用bellman-ford进行求解,若可以实现要求,则说明图中存在可以无限增大的环,这个可以通过bellman-ford算法判断环是否存在求出来,若在求解过程中发现已经兑换回原货币,并且钱比之前多,则可以直接退出算法。由于兑换过程中每种货币值必须为非负的,因此可以把所有初始路径长度设置为0,按照兑换方式对边进行松弛。原创 2016-05-02 03:40:40 · 1105 阅读 · 0 评论 -
代码与算法集锦-归并排序+树状数组+快排+深度优先搜索+01背包(动态规划)
归并排序求逆序数归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]...原创 2016-05-21 22:46:37 · 5146 阅读 · 0 评论