===== 数据结构 =====
文章平均质量分 76
striner
这个作者很懒,什么都没留下…
展开
-
java集合框架的练习之斗地主洗牌发牌的模拟(升级版)
首先,奉上java集合框架的练习之斗地主洗牌发牌的模拟(初级版)的链接:http://blog.csdn.net/striner/article/details/78489306初级版只具有洗牌发牌的功能,而玩家拿到手的牌也是乱序排放,此次程序需在初级版的基础上另加扑克牌的排序功能,进行进一步的升级.注:虽说此次程序是对上一次程序的一个升级,不过不要怕,没看过初级版的人看这篇博客也是完全不会有压力...原创 2017-11-09 15:25:37 · 754 阅读 · 0 评论 -
经典算法之二分查找 找出刚好比x稍微大点的那个数
题目描述:已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,23,91,95有整数x,比如: x=23要求找到一个刚好比x稍微大一点的元素位置当数组较大的时候,需要二分查找加快速度。思路分析:典型的二分查找问题,定义一个尾指针end和一个头指针begin不断二分递归,当end-begin==1时原创 2018-04-04 21:02:13 · 1768 阅读 · 0 评论 -
经典算法之并查集 合根植物
题目描述:w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式:第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1接下来一行原创 2018-04-03 11:16:41 · 775 阅读 · 2 评论 -
经典算法之走迷宫
问题描述:...1111111111111111111111111111111.111111........1111111111.111111.111111..111.11111111.....111111.11111111111.1111111111.11111111.111111.................11111111.111111.11111111111.1原创 2018-04-03 11:02:41 · 5801 阅读 · 0 评论 -
经典算法之辗转相除法(欧几里得定理)
问题描述:两个数a,b,要求求得这两个数的最大公约数和最小公倍数.解题思路:辗转相除法(欧几里得定理)思想:一个数,能整除数a和数b,那么这个数一定可以整除(a-b),即gcd(a, b) = gcd(a, a%b);基于算法基本定理: 质因数分解的一致性代码实现:import java.util.Scanner;public class Main原创 2018-04-01 18:27:00 · 6581 阅读 · 0 评论 -
经典算法之博弈论 高僧斗法
问题描述:两高僧斗法.现有若干级台阶(表示N级浮屠).又有若干小和尚随机的站在某个台阶上.最高一级台阶必须站人,其他任意.两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过.两个小和尚也不能站在同一台阶,也不能向低级台阶移动.两高僧轮流发出指令,最后所有小和尚必然都会挤在高段台阶上,再也不能向上移动.轮到哪个高僧指挥时无法移动,则游原创 2018-04-02 08:37:18 · 420 阅读 · 1 评论 -
经典算法之博弈论 填字母游戏
问题描述:有四种残局,星号'*'代表空格.两人博弈,轮流在空格处填补字母,一次只能填写一个,即'L'或者'O',最先拼出'LOL'字样的获胜.解题思路:每人每次只能填'L'字母或者'O'字母,而填充后局面如何就递归试探交给对方去判断,赢则return 1, 输则return -1, 平局则return 0.试探结束后再回溯用于试探下一个局面.代码实现:p原创 2018-04-01 19:15:50 · 1215 阅读 · 3 评论 -
经典算法之博弈论 取球博弈
问题描述:取球博弈.局面上有一堆球,二人博弈,每人一次只能取1,3,7或者8个球.要求输出局面有n个球时的胜负情况.解题思路:这里我提供两种题解,一种是纯递归求解,但纯递归CPU消耗过大,后面我还会提供动态规划+缓存的题解方法.实现方式一:*纯递归解题, 由于纯递归对CPU消耗过大,这里我以1到50个球的局面情况为例public class原创 2018-04-01 18:51:11 · 2438 阅读 · 1 评论 -
经典算法之分治法 求最大区间和
问题描述:数组中整数有正有负求一连续子段,使得和最大化例如:2,4,-7,5,2,-1,2,-4,3最大连续段:5,2,-1,2其最大和为8解题思路:制造递归条件,将数组分为两部分.将区间和分为三部分计算:第一部分:从begin开始计算[begin, index)第二部分:从end开始计算[index, end)第三部分:原创 2018-04-08 21:23:37 · 1583 阅读 · 0 评论 -
经典算法之尼姆堆问题
问题描述:有四堆硬币,数量分别为2, 5, 12, 14两玩家轮流取硬币,每人每次只能从某一堆上取任意数量的硬币,取到最后的玩家胜解题思路:这道题用尼姆堆解题 模2加(异或)解法当每一堆硬币数量异或值为0时,必胜 10 101 1100 1110 ------ 0101代码实现:public cl原创 2018-03-31 20:38:14 · 979 阅读 · 0 评论 -
经典算法之天平称重问题(进制解法)
问题描述:已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个要求输出重量1到n的所有物品的称重方式解题思路:用字符串拼接结果三进制的返回值为0 1 2返回值为0则表示该权重不取返回值为1表示加上该权重返回值为2表示该权重需要加上两遍,不符合题意. 故需将其转换为-1减掉该位权重,对商进行改变.如: 2 ÷ 3 - 2 ... 0 == -原创 2018-03-31 20:20:29 · 6089 阅读 · 0 评论 -
经典算法之天秤称重问题
问题描述:已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个要求输出1到n的所有物品的称重方式解题思路:物品重量砝码1123 - 1334 3 + 159 - 3 - 1......经过对比发现,若物品重量刚刚超过了较大砝码的一原创 2018-03-31 18:47:43 · 8551 阅读 · 0 评论 -
经典算法之分治法 大数相乘
题目描述:用串的形式表示大数的乘法。即求类似: "23234845847839461464158174814792" * "6457847285617487843234535"要求结果返回一个串。解题思路:采用分治法解题.具体方式已在代码中注释.代码实现:import java.util.Scanner;public class Main {原创 2018-04-05 13:29:56 · 2879 阅读 · 0 评论