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