杭电 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);


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值