输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8
具体代码如下:
#include "stdafx.h"
#include<list>
#include<iostream>
using namespace std;
//函数功能 : 打印满足条件的连续序列
//函数参数 : begin为开始,end为结束,左闭右开区间
//返回值 : 无
void PrintSequence(unsigned begin, unsigned end)
{
for(unsigned i = begin; i < end; i++)
cout<<i<<' ';
cout<<endl;
}
//函数功能 : 输出所有和为n连续正数序列
//函数参数 : n为整数
//返回值 : 无
void FindTargetSequence(unsigned n)
{
if(n < 3) //必须是2个连续数之和,n必须大于等于3
return ;
unsigned low = 1;
unsigned high = 2;
unsigned middle = n / 2;
unsigned sum = 1;
while(low <= middle) //只需考虑一半元素即可
{
if(sum == n) //满足条件
PrintSequence(low, high);
if(sum < n) //不够,说明还需要再加
{
sum += high;
high++;
}
else //够了,说明要减一点
{
sum -= low;
low++;
}
}
}
int main()
{
/*int sum, n;
cout << "请输入你要等于多少的数值sum:" << endl;
cin >> sum;
cout << "请输入你要从1.....n数列中取值的n:" << endl;
cin >> n;
cout << "所有可能的序列,如下:" << endl;
find_factor(sum,n); */
FindTargetSequence(15);
system("pause");
return 0;
}
分享到:
相关推荐
# 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 # 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 # 输入示例 # 输入:target = 9 # 输出:[[2,3,4],[4,5]...
57.2 和为 S 的连续正数序列题目描述牛客网题目描述输出所有和为 S 的连续正数序列。例如和为 100 的连续序列有:[9, 10, 11, 12, 13,
和为S的连续正数序列.md
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: ...
面试题57 - II. 和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。示例 1:输出:[
示例 1:输出:[[2,3,4],[4,5]]示例 2:输出:[[1,2,3,4,5],[4,5,6],[7,8]]当窗口的和小于 target 的时候,窗口的
用python实现,随便输入一个序列(乱序),判断这个序列是否是图序列,如果是,输出图形(有脚标)。
使用list,最简短的代码,输入一个正数n,输出所有和为n的连续正数序列,结果添加到list中
但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? ...
1.5.10. 输入一个正数 n,输出所有和为 n 连续正数序列 ................................125 1.6. 面试题集合(五) .......................................................................................126...
11.6编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。 100 11.7写一函数free,将上题new函数占用的空间释放free(p)表示将p...
示例 1:输出:[[2,3,4],[4,5]]示例 2:输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:方法:双指针法求出两个指针中间数的总和
1、设定左右指针left/right,分别指向1和2,维护左右指针间的窗口和sum 2、如果sum等于target值,将左右指针间的数字作为一个数组加入最终结果
设某信道有r个输入符号,s个输出符号,信道容量为C,当信道的信息传输率R,码长N足够长时,总可以在输入的集合中(含有r^N个长度为N的码符号序列),找到M ((M^(N(C-a))),a为任意小的正数)个码字,分别代表M个等可能...
每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。 题目:输入一个...
57.和为S的连续正数序列 Array 关注 58.翻转单词序列 String 58.左旋转字符串 String 59.滑动窗口的最大值 Queue 常考 60.n个骰子的点数 61.扑克牌顺子 62.孩子们的游戏 Math 63.股票的最大利润 Math 64.求1...
内容及步骤: 编写一个类Complex,定义复数的加法、减法、乘法和除法运算,要求在编写该类时重载这些运算操作符,并重载I/O操作符,以便输入和输出复数; 实验报告要求: 按要求写出完整的实验代码; ...
一个典 型的操作集包括与内部数据类型相关的基本算术指令(即实数和整数加法、减法、乘法和 除法等)、测试数据项性质(如是否为零,是正数或负数等)的指令 、对数据项的某一部 分进行存取和修改 (如在一个字中存取一...
找到一个长度为2N的数字数组的中位数,其中包含两个给定数组中的所有数字。 样本输入:1 2 3 4 1 4 5 6 样本输出:3.5 2.无尽的顺序 让我们以通过粘贴连续的正数形成的无限数字序列为例:S = ...
一个典型的操作集包括 与内部数据类型相关的基本算术指令(即实数和整数加法、减法、乘法和除法等)、测试 数据项性质(如是否为零,是正数或负数等)的指令 、对数据项的某一部分进行存取和修 改 (如在一个字中存取一...