和为S的连续正数序列

题目描述

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
 1 import java.util.ArrayList;
 2 
 3 /**
 4  * 
 5  * @author gentleKay
 6  * 题目描述
 7  * 小明很喜欢数学,有一天他在做数学作业时,
 8  * 要求计算出9~16的和,他马上就写出了正确答案是100。
 9  * 但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
10  * 没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。
11  * 现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
12  * 输出描述:
13  * 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
14  */
15 
16 public class Main40 {
17 
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         System.out.println(Main40.FindContinuousSequence(10));
21         
22     }
23     
24     public static ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
25         ArrayList<ArrayList<Integer>> list = new ArrayList<>();
26         for (int i=1;i<sum;i++) {
27             int num = 0;
28             ArrayList<Integer> array = new ArrayList<>();
29             for (int j=i;j<sum;j++) {
30                 num = num + j;
31                 array.add(j);
32                 if (num == sum) {
33                     list.add(array);
34                     break;
35                 }
36                 if(num > sum) {
37                     break;
38                 }
39             }
40         }
41         return list;
42     }
43 
44 }
原文地址:https://www.cnblogs.com/strive-19970713/p/11177341.html