//
//小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,
//他马上就写出了正确答案是100。
//但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
//没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。
//现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?
//Good
//输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
//牛客剑指offer完美通过.
#include <iostream>
using namespace std;
void Grial(int x)
{
int i = 0;
int a;
int b;
int data[x];
int k = 0 ;
for(i=1;i<x;i++)
{
int sum = 0;
for(int j = i;j<x;j++)
{
sum+=j;
if(sum==x)
{
a=i;
b=j;
break;
}
if(sum>x){
break;
}
}
if(sum==x)
{
for(int j = a;j<=b;j++)
{
data[k++]=j;
}
}
}
for( i = 0;i<k;i++)//相当与剑指offer里面的vector<vector<int> >。
{
cout<<data[i]<<" ";
}
cout<<endl;
}
int main()
{
Grial(9);
return 0;
}
C++输出所有和为S的连续正数序列(牛客剑指offer)
最新推荐文章于 2021-08-25 16:14:29 发布