小编Mat*_*att的帖子

为什么Stack <T>和Queue <T>用数组实现?

我正在Albahari兄弟的Nutshell中阅读C#4.0,我发现了这个:

堆栈在内部实现,其数组根据需要调整大小,与Queue和List一样.(第288页,第4段)

我不禁想知道为什么.LinkedList提供O(1)头尾插入和删除(这应该适用于堆栈或队列).可调整大小的数组有O(1)缓冲插入(如果我没记错的话),但O(n)最坏的情况(我不确定删除).它可能比链表使用更多的空间(对于大型堆栈/队列).

还有更多吗?双链表实现的缺点是什么?

.net c# queue stack linked-list

27
推荐指数
3
解决办法
4993
查看次数

最大化表的总和,其中每个数字必须来自唯一的行和列

假设我们有一个这样的数字表(我们可以假设它是一个方形表):

20  2   1   3   4
5   1   14  8   9
15  12  17  17  11
16  1   1   15  18
20  13  15  5   11
Run Code Online (Sandbox Code Playgroud)

您的工作是计算n个数字的最大总和,其中n是表中的行数或列数.捕获的每个数字必须来自唯一的行和列.

例如,选择(0,0),(1,1),(2,2),(3,3)和(4,4)处的数字是可以接受的,但是(0,0),(0, 1),(2,2),(3,3)和(4,4)不是因为前两个数字是从同一行拉出的.

对这个问题我的(可笑的)解决方案是迭代遍历行和列的所有可能的排列.这适用于小网格,但当然,随着n变大,它会非常慢.它有O(n!)时间复杂度,如果我没有弄错的话(下面的示例Python代码).

我真的认为这可以在更好的时间内解决,但我没有想出任何足够聪明的东西.

所以我的问题是,应该使用什么算法来解决这个问题?

如果它有帮助,这个问题似乎背包问题类似 .

import itertools
import re

grid = """20    2   1   3   4
5   1   14  8   9
15  12  17  17  11
16  1   1   15  18
20  13  15  5   11"""
grid = [[int(x) for x in re.split("\s+", line)] for line …
Run Code Online (Sandbox Code Playgroud)

algorithm combinatorics

9
推荐指数
1
解决办法
1802
查看次数

PHP 的表格括号技巧是为了 Django 的 ___?

在 PHP 中,您可以创建具有以下名称的表单元素:

category[1]
category[2]
Run Code Online (Sandbox Code Playgroud)

甚至

category[junk]
category[test]
Run Code Online (Sandbox Code Playgroud)

当表单发布后,category它会自动变成一个不错的字典,例如:

category[1] => "the input value", category[2] => "the other input value"
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Django 中做到这一点?request.POST.getlist不太正确,因为它只是返回一个列表,而不是一个字典。我也需要钥匙。

php python django

5
推荐指数
0
解决办法
866
查看次数

标签 统计

.net ×1

algorithm ×1

c# ×1

combinatorics ×1

django ×1

linked-list ×1

php ×1

python ×1

queue ×1

stack ×1