SeriesSum

来源:互联网 发布:mac book air 换电池 编辑:程序博客网 时间:2024/06/06 15:35

和为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开始。

这里写图片描述

这里写图片描述

0 0