Python算法题----求出和为S的全部连续正整数数列

从1开始,求出全部的和为21的连续正整数数列。好比1+2+3+4+5+6 和为 21, 6+7+8和为21。
python

解法:该题目仍然须要首尾两个指针,一个为start,一个为end。sum=start+end。 若是sum大于21,start后移,若是等于21,打印start到end的数列。start,end所有后移。若是小于21,end后移。指针移动时。注意,sum的值也要相应变化。
ide

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.pyit

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

[6, 7, 8]test

[10, 11]top

相关文章
相关标签/搜索