小编sag*_*van的帖子

使用分而治之的矩阵乘法,时间复杂度

在此输入图像描述 据我所知,该算法使用8次乘法和4次加时间复杂度: 在此输入图像描述

乘法在每个n/2 * n/2矩阵上完成.我对此几乎没有问题:

  1. 每个n * n矩阵最终都会n=1通过执行来缩小尺寸T(n/2)吗?如果这样返回a11*b11似乎毫无意义好像回到1*6a11*b11为以下矩阵:

在此输入图像描述

然后基本情况应该n==2执行else部分,因为下面的操作似乎是合法的.

在此输入图像描述

  1. 为什么增加部分采取0(n^2)?我的意思是,我们完全没有处理矩阵加法,而仅仅是数字,因为每个矩阵都减少到2 * 2如下:

在此输入图像描述

那么加法部分应该只贡献4个?(为什么0(n^2)?)

algorithm divide-and-conquer matrix-multiplication clrs

5
推荐指数
1
解决办法
2793
查看次数

NameError:名称“请求”未定义,在 Django 表单中

如何获取当前登录的用户forms.py?我正在尝试预先填充当前用户的电子邮件字段。

class ContactMe(forms.Form):
    name                 = forms.CharField(label = "Name")
    email_address        = forms.CharField(label = "Email Address", intital = request.user.email)
    subject              = forms.CharField(label = "Subject")
    message              = forms.CharField(label = "Message", widget=forms.Textarea(attrs={'cols': 10, 'rows': 3}))
    additional_comments  = forms.CharField(required = False)
    class Meta:
        model = Contact_me
Run Code Online (Sandbox Code Playgroud)

我尝试从views.pyas传递请求:

contact_form = ContactMe(request.POST or None, request)
Run Code Online (Sandbox Code Playgroud)

然后在类内接收请求ContactMe

class ContactMe(forms.Form, request):
    name                 = forms.CharField(label = "Name")
    email_address        = forms.CharField(label = "Email Address", intital = **request.user.email**)
    subject              = forms.CharField(label = "Subject")
    message              = forms.CharField(label …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-views

5
推荐指数
1
解决办法
2万
查看次数

生成格雷码.

我尝试用Python生成格雷码.此代码正常工作.问题是我正在初始化函数中的基本case(n=1,[0,1])main并将其传递给gray_code函数来计算其余部分.我想在函数本身内生成所有格雷码,包括基本案例.我怎么做?

def gray_code(g,n):
    k=len(g)
    if n<=0:
        return

    else:
        for i in range (k-1,-1,-1):
            char='1'+g[i]
            g.append(char)
        for i in range (k-1,-1,-1):
            g[i]='0'+g[i]

        gray_code(g,n-1)

def main():
    n=int(raw_input())
    g=['0','1']
    gray_code(g,n-1)
    if n>=1:
        for i in range (len(g)):
            print g[i],

main()
Run Code Online (Sandbox Code Playgroud)

这个算法的递归关系是T(n)=T(n-1)+n什么?

python algorithm recursion gray-code

4
推荐指数
2
解决办法
6024
查看次数

为什么堆结构的自顶向下方法效率低于自下而上,即使它的增长顺序比O(n)低O(log n)?

如何自下而上的O(n)阶的堆构造方法?Anany Levitin在他的书中说,与自上而下的O(log n)方法相比,这更有效.为什么?

algorithm heap time-complexity

3
推荐指数
2
解决办法
1万
查看次数

为for循环中的列表定义索引的范围

我是Python的初学者.我正在编码"数组元素之间的最小差异"问题.我们的想法是对数组进行排序,然后找出相邻元素之间的差异,找到具有最小差异的元素.

但是,我想知道如何在for循环中定义列表索引的范围,以便我的索引不会超过size-2.

import sys

a=[34,56,78,32,97,123]
a,size=sorted(a),len(a)
min=sys.maxint

for i,x in enumerate(a):  # Need a range for index i from 0 to size-2
    if(abs(a[i]-a[i+1])<min):  
        min=abs(a[i]-a[i+1])

print min
Run Code Online (Sandbox Code Playgroud)

python arrays

2
推荐指数
1
解决办法
1441
查看次数

从最大堆中删除节点 A[i]

CLRS 练习:6.5-8

该操作从堆中HEAP-DELETE(A,i)删除节点中的项目。给出一个针对 n 元素最大堆及时运行的实现。iAHEAP-DELETEO(lg n)

在此输入图像描述

我想知道算法对于输入A[10]={84,22,19,21,3,10,6,5,20}(索引从1开始)和A[6]=10被删除是否错误。用替换最后一个节点A[6]将导致违反堆属性,忽略父值。

我为此编写了一个算法,想知道它是否正确或者我哪里出错了?

HEAP-DELETE(A,i)
  A[i]=A[A.heapsize]
  A.heapsize-=1
  while i>1 and A[parent(i)]<A[i]
    swap A[i] with A[parent(i)]
    i=parent(i);
Run Code Online (Sandbox Code Playgroud)

algorithm clrs max-heap

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