Tag: 算法

连接图中的桥梁

我有一个编程任务(不是家庭作业),我必须在图表中find桥梁。 我自己做了一些,但是不能拿出任何令人满意的结果。 所以我GOOGLE了,我find了一些东西,但我无法理解算法,因为它是呈现。 有人可以看看这个代码,给我一个解释。 public Bridge(Graph G) { low = new int[GV()]; pre = new int[GV()]; for (int v = 0; v < GV(); v++) low[v] = -1; for (int v = 0; v < GV(); v++) pre[v] = -1; for (int v = 0; v < GV(); v++) if (pre[v] == -1) dfs(G, v, […]

Kotlin按值排序数组

让我们有一个class Player(val position: Int, val time: Float) ,我们要排序的arrays或players列表的position 。 如果这些players中的一些在排序后有相同的position ,我们希望按time分组。 我的意思是一组players的位置相同。 我知道 list.sortedWith(compareBy { it.a }.thenByDescending { it.b }.thenBy { it.c }) 但当然这并不能解决这个问题。 Kotlin有没有什么聪明的方法来完成这个简单的任务? 我们可以通过检查位置和交换项目来手动排序,但是我想知道在这种情况下Kotlin是否有话要说。

为什么这种随机生成图表的方式不公平?

我的目标是生成一个有向图,包含n个顶点,每个顶点都有一个边缘出来,并有一个边缘进来。我认为这样做的一种方法是将所有的顶点放在一个底池中,顶点轮流洗牌和拉出条目 – 例如,如果顶点1拉出顶点3,那么意味着将有一个从1到3的边缘。如果一个顶点从jar子中拉出来,它就把它放回去重新洗牌。 如果最后一个顶点发现底池只包含它自己,那么我们需要重新开始。 这是我的Kotlin代码: fun generateGraph(n: Int): Map { val vertices : List = (1..n).toList() while (true) { val pot = vertices.toMutableList() val result = mutableMapOf() for (vertex in 1 until n) { do { java.util.Collections.shuffle(pot) } while (pot[0] == vertex) result.put(vertex, pot.removeAt(0)) } if (pot[0] != n) { result.put(n, pot.removeAt(0)) return result } […]

Kotlin – 从数组中删除重复的字符串的习惯方法?

如何从kotlin中的Array中删除重复项?

排序可能包含数字的字符串

我需要编写一个比较字符串的Java比较器类,然而只有一个转折点。 如果它比较的两个字符串在字符串的开始和结尾是相同的,并且不同的中间部分是整数,则根据这些整数的数值进行比较。 例如,我需要下列字符串才能显示出来: AAA bbb 3 ccc bbb 12 ccc ccc 11 DDD eee 3 ddd jpeg2000 eee eee 12 ddd jpeg2000 eee 正如你所看到的,字符串中可能还有其他整数,所以我不能只用正则expression式来分解任何整数。 我想从一开始就走字符串,直到find一个不匹配的位,然后从最后走到最后find一个不匹配的位,然后比较中间位和正则expression式“[0-9] +”,如果比较,则进行数字比较,否则进行词法比较。 有没有更好的办法? 更新我不认为我可以保证字符串中的其他数字,可以匹配的数字,周围没有空格,或者不同的数字有空格。