Python--ZOJ1051

来源:互联网 发布:淘宝网汽车贴膜 编辑:程序博客网 时间:2024/05/16 00:34

ZOJ1051

       这道题是模拟细菌培养的,思路简单,但写起来有些麻烦。题目本身对输入(Input Format:)的解释只有三部分,但实际测试用例里有四部分。。。。。第一行一个整数表示测试用例的的数量,第二行表示实验的天数,第三行表示一个基因序列,决定第二天的细菌密度,后面的部分就是培养皿上细菌的密度。题目要求就是算出给的天数后细菌密度大小,某个培养皿上的密度分布为0~3,首先算出上下左右与其密度之和,找出其下标的基因序列上的值,再进行范围修正,如此循环给定的天数,按照输出要求,输出对应的字符。

       但是这道题提交老是出错,显示“Non-zero Exit Code”!!!很无语,所以以下代码仅供参考啦,有大神看到的话也请指点一二!其他需要说明的地方我会在注释中写明!

<span style="font-family:SimSun;font-size:14px;">#2015-02-07# -*- coding: utf-8 -*-#import time      这个模块是我用来测算程序运行的时间的,因为也许是超时导致了Non-zero Exit Code,不过结果显示程序并没有超时。import sys#计算密度def sq(list,i,j):    '计算密度'    sum = 0    sum += int(list[i][j])    if j-1 >= 0:        sum += int(list[i][j-1])    if j+1 <= 19:        sum += int(list[i][j+1])    if i-1 >= 0:        sum += int(list[i-1][j])    if i+1 <=19:        sum += int(list[i+1][j])    return sumn = int(raw_input())pp = '.!X#'square = [[0 for i in range(20)] for j in range(20)]  #构造两个二维数组,数据之间会相互影响,不能直接在原数组上操作square2 = [[0 for i in range(20)] for j in range(20)]#start = time.time()while n > 0:    day = int(raw_input())    line = raw_input()    density = line.split()    for i in range(20):        line = raw_input()        square[i] = line.split()    while day > 0:        for i in range(20):            for j in range(20):                square2[i][j] = int(density[sq(square,i,j)])+int(square[i][j])                if square2[i][j] < 0:                    square2[i][j] = 0                if square2[i][j] > 3:                    square2[i][j] =3        (square,square2) = (square2,square)  #两个数组进行交换        day -= 1    for i in range(20):        for j in range(20):            print pp[square[i][j]],            sys.stdout.softspace=0  #去除print语句后产生的空格        print '\n',    n -= 1    if n>0:        print '\n',#elapsed = time.time() - start#print elapsed</span>

        我拿了别人用C++写的程序跟我这个进行输出结果的比较,至少测试的几组都一样,真是无能为力了。我觉得有可能是兼容性的原因,ZOJ的Python版本是2.3我用的是2.7,当然这只是一个猜测。

0 0
原创粉丝点击