和为s的连续正整数序列 SeriesSum
- 输入一个正整数s,打印出所有和为s的连续正整数序列(至少含有两个数字)。
代码
#include <stdio.h>
#include <vector>
using namespace std;
void two_sum2(vector<int> nums, int s){
int start = 0;
int end = 1;
int half = (s+1)/2;
int sum = nums[start] + nums[end];
while (start<half&&end<=(int)nums.size()) {
if (sum==s) {
for (int i=start; i<=end; i++) {
printf("%d ", nums[i]);
}
printf("\n");
sum = sum - nums[start];
start++;
end++;
sum = sum + nums[end];
}
else if(sum<s){
end++;
sum = sum + nums[end];
}
else{
sum = sum - nums[start];
start++;
}
}
}
int main() {
int a[] = {1,2,3,4,5,6,7,8,9,10,11};
vector<int> array(a,a+11);
two_sum2(array, 21);
return 0;
}
思路及执行过程
思路:定义两个指针,分别不过,start指针从1开始,end指针从2开始。