Python多维数组定义

  • Post author:
  • Post category:python


刚开始学习Python语法,还是习惯去oj刷题,遇到问题再去解决比较深刻。h

下面这个题主要学习了函数和数组的定义。

http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2176.html

先说下,Python的循环
range()函数,创建一个整数列表
for i in range(10):
    sum+=i;

一个简单的递归题目,要边递归边存,不然会出现超时。

#coding=utf-8
def getValue(a,b,c):
    if x[a][b][c]<>-1:
        print("("+str(a)+","+str(b)+","+str(c)+")="+str(x[a][b][c]));
        return x[a][b][c];
    elif a<=0 or b<=0 or c<=0 :
        x[a][b][c]=1;
        return 1;
    elif  a>20 or b>20 or c>20 :
        print("===");
        x[a][b][c] = getValue(20, 20, 20);
        return x[a][b][c];
    elif a<b and b<c :
        x[a][b][c]=getValue(a,b,c-1)+getValue(a,b-1,c-1)-getValue(a,b-1,c);
        return x[a][b][c];
    else:
        x[a][b][c] = getValue(a - 1, b, c) + getValue(a - 1, b - 1, c) + getValue(a - 1, b, c - 1) - getValue(a - 1, b - 1, c - 1);
        return x[a][b][c];

x=[[[-1]*40]*40]*40;
while True:
    a=map(int,raw_input().split());
    print(a[0] if a[0]>0 else 0,a[1] if a[1]>0 else 0,a[2] if a[2]>0 else 0);
    print(getValue(a[0] if a[0]>0 else 0,a[1] if a[1]>0 else 0,a[2] if a[2]>0 else 0));
    print(x);

以上的代码是WA的。

问题在多维数组的定义。这个是数组的浅拷贝,一个值改变后其他的复制的值也会改变。

改成下面这种定义就可以了。

x=[[[-1 for i in range(30)] for i in range(30)] for i in range(30)];

当然还有导入

NumPy数据库的方式,里面有很多的函数可以直接调用。



版权声明:本文为u010026255原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。