Python算法題----求出和爲S的所有連續正整數數列

從1開始,求出所有的和爲21的連續正整數數列。比如1+2+3+4+5+6 和爲 21, 6+7+8和爲21。

解法:該題目仍然需要首尾兩個指針,一個爲start,一個爲end。sum=start+end。 如果sum大於21,start後移,如果等於21,打印start到end的數列。start,end全部後移。如果小於21,end後移。指針移動時。注意,sum的值也要相應變化。

def addSeq(n):
    start, end = 1, 2
    stop = (n+1) / 2
    mysum = start + end
    while start < stop:
        if mysum == n:
            print range(start, end+1)
            mysum -= start
            start += 1
            end += 1
            mysum += end
        elif mysum < n:
            end += 1
            mysum += end
        else:
            mysum -= start
            start += 1


if __name__ == '__main__':
    addSeq(21)


答案:

C:\Python27\python.exe E:/cyou-inc.com/test/test.py

[1, 2, 3, 4, 5, 6]

[6, 7, 8]

[10, 11]


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章