我是靠谱客的博主 飘逸红牛,这篇文章主要介绍和为s的连续正数序列,现在分享给大家,希望可以做个参考。

题目:输入一个正数S,打印出所有和为S的连续正数序列
(至少含有两个数)。

例如,输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以打印
出3个连续序列1,2,3,4,5,4,5,6和7,8。
首先把small初始化为1,big初始化为2。如果从smal1到
big的序列的和大于S,则可以从序列中去掉较小的值,也
就是增大small的值。如果从sma1l到big的序列的和小于
S,则可以增大big,让这个序列包含更多的数字。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package helen.d; public class Continuous { public static void main(String[] args) { int num[]={1,2,3,4,5,6,7,8,8,9,9,10}; ContinuousSum(num,15); } private static void ContinuousSum(int[] num, int target) { if(num==null||num.length<2){ return; } int start=0; int end=1; int sum=num[start]+num[end]; while(start<end){ if(sum==target){ for(int i=start;i<=end;i++){ System.out.print(num[i]+" "); } System.out.println(); if(end<num.length-1){ end++; sum=sum+num[end]; }else { System.out.println("失败!"); return; } } if(sum<target){ if(end<num.length-1){ end++; sum=sum+num[end]; }else { System.out.println("失败!"); return; } } if(sum>target) { sum=sum-num[start]; start++; } } } }

最后

以上就是飘逸红牛最近收集整理的关于和为s的连续正数序列的全部内容,更多相关和为s内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部