杭电 ACM 1003 python实现

我是要有多无聊啊。想起来acm的题目,趁着中午午休时间看了下杭电acm的网站。好怀念啊。想想那个时候的有趣。哎,想想现在,元旦都他妈要加班。艹。

看了一个简单的题目,闲着用python结题,python这语音还是蛮有趣的;

直接上过程代码; 

import Queue;
#每次计算的结果数据对象
class CResult:
    def __init__(self,SumValue,StartPosition,Endposition):
        #相加的值
        self.SumValue=SumValue;
        #起始位置
        self.StartPosition = StartPosition;
        #结束位置
        self.EndPosition = Endposition;
    

#相加指定区间内的连续数
def calcspecialrange(array,start,end):
    sums = 0;
    for j in range(start,end):
        sums +=array[j];
    return sums;        
#计算连续相加的数为CalNum,在数组中这些存在的相加的结果集
def Calculate(array,arraylen,sumsqueue,CalNum):
    index=1;
    while(index+CalNum<=arraylen and index+CalNum>=2):
         sums = calcspecialrange(array,index-1,index-1+CalNum);
         TempCRsult = CResult(sums,index-1,index-1+CalNum);
         SumsQueue.put(TempCRsult);
         index=index+1;
#最后从结果集中找到最大的那个数         
def FindMax(Queue):
    temp=0;
    for i in range(Queue.qsize()):
        tempa = Queue.get();
        if(temp<=tempa.SumValue):
            temp=tempa.SumValue;
    return temp;
#计算sum 
def CalSum(array,arraylen,sumsqueue):    
    for i in range(arraylen,1,-1):
    #计算连续i个数的和   (从i,i-1,...2)
        Calculate(array,arraylen,sumsqueue,i);
    return sumsqueue 

Array=[0,6,-1,1,-6,7,-5];
#Array=[6,-1,5,4,-7];
ArrayLen = len(Array);
SumsQueue = Queue.Queue(0);    
aa=CalSum(Array,ArrayLen,SumsQueue);
print FindMax(aa);


你可能感兴趣的:(python,数据,对象,1003,杭电acm)