Tag: 算法

二维迷宫的递归算法?

(这不是重复)我们在所有4个侧面都有一个由X围绕的2D迷宫,也有内部块。 迷宫的所有这些字符都存储在2D数组中。 程序必须找到从’S’开始到目标’G’的路径。 为此,使用名为’solve(int row,int col)的布尔方法,并使用’S’的行和列索引进行初始化。 算法必须是递归的。 如果它能够找到’G’的路径并且其他方面是假的,那么它应该返回true。 这是我试图解决这个显示“部分正确结果”的问题的方法。 public boolean solve(int row, int col) { char right = this.theMaze[row][col + 1]; char left = this.theMaze[row][col – 1]; char up = this.theMaze[row – 1][col]; char down = this.theMaze[row + 1][col]; if (right == ‘G’ || left == ‘G’ || up == ‘G’ || down == […]

Prim用于生成迷宫的算法:获取相邻小区

我正在基于Prim算法的迷宫生成器程序: 该算法是Prim算法的随机版本。 从充满墙壁的网格开始。 选择一个单元格,将其标记为迷宫的一部分。 将单元格的墙添加到墙列表中。 虽然列表中有墙: 从列表中选择一个随机墙。 如果对面的细胞尚未进入迷宫: 使墙成为通道,并将对面的细胞标记为迷宫的一部分。 将单元格的相邻墙添加到墙列表中。 如果对面的单元格已经在迷宫中,请从列表中移除墙壁。 (来自维基百科 ) 我已经理解了算法,我只是坚持这一部分:“知道相邻小区是否构成了迷宫的一部分”(这意味着,首先获取相邻小区)因为小区实际上是树的节点(迷宫,一个二维细胞arrays),墙壁是这些节点之间的边缘,我认为有必要用一对点(x,y)识别每个墙壁。 我怎么知道两个单元是否通过墙连接? (记住每个单元有4面墙) 我想过使用equals()函数。 我只是要求伪代码或你的最佳解释,这将使事情变得更容易。 My Wall类有三个属性:bool isWall(确定它是墙还是单元格之间的通道); int x; int y(标识符)。 如果您认为我需要更多属性,我将很高兴知道。 我知道有一个简单的方法,我只是卡住了;)谢谢你的时间!

在Java中实现一种键值对(实际上不是HashMap)

在Java中实现以下场景的最佳方法是什么: 一种键值对机制,但它看起来像这样: param1 + param2 + param3 -> output1 param1 + * + !param3 -> output2 param1 + text containing value param2 + * -> output3 ‘*’ => any parameter !param => any value other than this parameter text containing value ‘param’ => any data which contains the value ‘param’. ex: aaaaa,bbb,param,ccc or aaaparambbb 在我看来,HashMap使得实现这种类型的映射变得困难。 […]

如何将有序的整数列表划分为大小均匀的子列表?

有没有人有一个很好的算法来获取整数的有序列表,即: [1,3,6,7,8,10,11,13,14,17,19,23,25,27,28] 在给定数量的均匀大小的有序子列表中,即对于4,它将是: [1,3,6] [7,8,10,11] [13,14,17,19] [23,25,27,28] 要求是每个子列表都是有序的并且尺寸尽可能相似。

Hashtable的超时机制

我有一个哈希表,在流量很大的情况下。 我想为哈希表添加超时机制,删除太旧的记录。 我担心的是, – 它应该是轻量级的 – 删除操作没有时间关键。 我的意思是(超时值是1小时)删除操作可以在1小时或1小时15分钟后。 没有问题。 我的意见是,我创建了一个大数组(作为环形缓冲区),存储时间和哈希表键,当添加到哈希表时,使用数组索引查找数组上的下一个插槽时间,如果数组插槽为空,则插入时间和HT键,如果数组槽不为空,则比较发生超时的插入时间。 如果超时发生从Hashtable中删除(如果尚未删除)则不会发生超时,增加索引直到找到空槽或时间数组槽。 从哈希表中删除时,大数组上没有操作。 不久,对于Hashtable的每个添加操作,可以从哈希表中删除1个timeouted元素或不执行任何操作。 您的优雅和轻量级解决方案是什么? 谢谢你的帮助,

如何在对象层次结构中找到循环?

有一个类Company ,它引用了另一个Company实例来代表parent 。 假设有四家公司c1 , c2 , c3和c4以及c2 , c3 , c4将母公司设为c1 。 例如: public class Company { public Company parent; public Company() { } public Company(Company parent) { this.parent = parent; } public static void main(String[] args) { Company c1 = new Company(); Company c2 = new Company(c1); Company c3 = new Company(c1); Company […]

Yaroslavskiy的双枢轴快速排序算法

我正在研究我在这里找到的双枢轴快速排序(幻灯片中的第20页) 比较: Yaroslavskiy平均需要= 1.9 n nn。 Classic Quicksort需要= 2 n n n n n比较! 互换: Yaroslavskiy算法的互换= 0.6 n nn 经典Quicksort的掉期= 0.3 n nn 结果 数据类型—– comp ——- swap int ————- 591ns ——— 802ns 浮———– ———- 838ns 873ns 双——- 873ns ———- 1047ns char ———- 593ns ———– 837ns / *注意: – 上面的结果是纳秒,并使用intel core 2 duo * /在java […]

给定一个字符串,找到具有相同元音和辅音数量的最长子字符串?

给定一个字符串,找到具有相同元音和辅音数量的最长子字符串。 澄清:我不确定,我们是否可以生成一个新字符串,或者子字符串必须是原始字符串的一部分? 到目前为止我有这个, 代码片段: Scanner scanner = new Scanner(System.in); String string = new String(scanner.next()); int lengthOfString = string.length(); int vowelCount = 0; int consCount = 0; for (int i = 0; i < lengthOfString; i++) { if (string.charAt(i) == 'u' || string.charAt(i) == 'e' || string.charAt(i) == 'i' || string.charAt(i) == 'o' || string.charAt(i) == […]

找到位于2D平面中同一直线上的最大点数

这个“在2D平面上给定n个点,找到位于同一直线上的最大点数。” 来自leetcode.com的问题我试图解决它,但我无法通过所有测试用例。 我想要做的是: – 我正在使用一个hashmap,其键是角度b / w,我通过斜率的tan反转得到的点,我存储的每个斜率的值最初是no的值该点的出现然后递增它。 我正在使用另一个hashmap来计算点的出现次数。 我没有得到像(0,0),(1,0)这样的点的正确答案,它应该返回2但是它返回1。 我错过了什么? 我的代码是: public class MaxPointsINLine { int max = 0; int same; public int maxPoints(Point[] points) { int max = 0; Map map = new HashMap(); Map pointmap = new HashMap(); for(Point point: points) { if(!pointmap.containsKey(point)) { pointmap.put(point, 1); } else { pointmap.put(point, pointmap.get(point)+1); } } […]

如何查找网站的平均加载时间?

如何编写代码(在任何编程语言中,最好在java中),它计算任何网站的平均加载时间(包括所有嵌入的元素,如图像,Javascript,CSS等)?