概述
题目:输入一个正数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,让这个序列包含更多的数字。
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的连续正数序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复