2

我使用 Python 在 SPOJ 中完成了一些问题。我有几个正确的。休息一下,我大部分时间都在继续获得 NZEC。我在代码末尾添加了 sys.exit(0) 。但它仍然显示相同。

我想知道我的一些写作练习是否犯了这个错误。请提出任何更改。我认为我的算法是写的,但如果它错了,请建议任何更改。

这是问题的链接。

http://www.spoj.com/problems/NSTEPS/

def check_num(m,n):
    if(m!=n and m!=n+2):
        return 0;
    elif(m==n) :
        if(m%2==1):
            a=int((m+1)/2)-1;
            return (1+a*4);
        else :
            a=int(m*2);
            return(a);
    elif(m==n+2):
        if(n%2==1):
            a=int((n+1)/2)+1;
            return (3+a*4);
        else :
            a=int(n*2);
            return(2+a);            
import sys;
inp=sys.stdin.read().split("\n");
N=int(inp[0]);
i=1;
l=dict();
b=dict();
c=dict();
for i in range(1,N+1):
    a=inp[i];
    k=0;
    b[i],c[i]=[int(a[k]),int(a[k+2])];
    if (b[i]==0 and c[i]==0):
        l[i]=0;
    else :
    l[i]=check_num(b[i],c[i]);
for i in range(1,N+1):
    if (l[i]==0):
        if (c[i]==0 and b[i]==0):
            print l[i];
        else:
            print "No Number";
    else :
        print l[i];
sys.exit(0)

提前致谢。

4

3 回答 3

0

基本上,当您尝试访问大于其大小的数组时,或者对于某些测试用例,您的程序可能无限运行时,您会收到 nzec 错误或运行时错误...

最后,它们可能是您的代码中的一些逻辑错误,请在您的代码中尝试极端的测试用例。

由于在 spoj 中,该站点未正确维护,因此对于某些问题,我尝试在 python 和 java 中获得 tle,但在 C 和 C++ 中获得了 AC。发生这种情况是因为问题的设置者没有设置正确的时间。这类事情在我身上发生了很多。

快乐编码

于 2013-11-17T10:38:23.343 回答
0

NZEC 主要是由于数组索引。eg:一个一般的例子:string s = ''; s[0] = 'a' 将给出 NZEC 超出范围的数组索引也会给出 NZEC

您应该尽量避免使用数组索引。而是使用像'for..in'这样的结构

于 2014-04-05T15:23:59.163 回答
0

尝试将您的表格替换为空格。大输出也可能导致问题,因此请尝试使用 sys.stdout.write() 和 sys.stdout.flush()。另一个常见原因:到达列表边界,int('423\n') 或其他函数(参数)调用时参数为无或格式错误,读取所有输入后调用 sys.stdin.readline() 将给出未处理的异常,其他未处理的异常。

于 2017-02-17T16:23:16.890 回答