我是要有多无聊啊。想起来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);