您的位置:首页 > 其它

和为S的连续正数序列

2016-08-07 11:38 127 查看


题目描述

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

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

class Solution {

public:

    vector<vector<int> > FindContinuousSequence(int sum)

    {

         vector<vector<int> >res;

         if(sum<3)return  res; 

        int small=1;

        int big=2;

        int mid=(sum+1)/2;

        int cursum=small+big;

        while(small<mid)

            {

            if(cursum==sum)

                {

                 output(small,big,res);

                 big++;

                 cursum+=big;

                }

          else  if(cursum<sum)

              {

               big++;

               cursum=cursum+big;

              

              }

            else

              {

                 cursum-=small;

                 small++;    

              }

            

            }

        return res;

    }

   void output(int small,int big,vector<vector<int> >&res)

    {

        vector<int>  temp;

        for(int i=small;i<=big;i++)

            {

            temp.push_back(i);

      

           }

        res.push_back(temp);

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: