• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数

C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数

作者:jerrylsxu 字体:[增加 减小] 来源:互联网 时间:2017-05-28

jerrylsxu 通过本文主要向大家介绍了c++初学者看什么书,c++初学者指南,初学c++看什么书,c++整数转字符串,c++大整数加法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

题目描述:一个正整数有可能可以被表示为 n(>=2) 个连续正整数之和,如:

15=1+2+3+4+5
15=4+5+6
15=7+8

请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

输入数据:一个正整数,以命令行参数的形式提供给程序。

输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出 “NONE” 。

例如,对于 15 ,其输出结果是:

1 2 3 4 5
4 5 6
7 8

对于 16 ,其输出结果是:

NONE

这是一道2005年百度之星程序设计大赛试题初赛题目。思路如下:

1、满足要求的数是连续的,所以只要选定起始值累加求和即可;

2、要确保遍历所有可能的起始值并且让循环的次数尽量少。分析一下可以知道,一个数最少由两个数求和构成,又因为这两个数是连续的。所以最大的起始值不会大于该数的二分之一。

代码如下,VC6.0验证OK。请拍砖,^_^

#include <iostream>
#include <vector>
using namespace std;
// 根据输入的任何一个正整数,输出可能被表示的连续正整数
void Numbers(int number)
{
if (number <= )
{
return;
}
vector<int> save;
bool exist = false;
// 遍历可能的起始值
for (int possible = ; possible < number / + ; possible++)
{
int start = possible;
int i = start;
int sum = ;
while (sum <= number) // 保存可以表示的连续正整数并输出
{
sum += start;
if (sum == number)
{
exist = true;
for (; i < start + ; i++)
{
save.push_back(i);
}
for (i = ; i < save.size(); i++)
{
cout << save[i] << " ";
}
save.clear(); // 清空、准备保存下一可能的序列
cout << endl;
}
start++;
}
}
if (false == exist)
{
cout << "NONE" << endl;
}
}
int main(int argc, char **argv)
{
const int number = ;
Numbers(number);
Numbers();
return ;
}
</div>

以上所述是小编给大家介绍的C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数,希望对大家有所帮助!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数

相关文章

  • 2017-05-28用位图排序无重复数据集实例代码(C++版)
  • 2017-05-28用C++实现队列的程序代码
  • 2017-05-28C++ 学习之旅 Windows程序内部运行原理
  • 2017-05-28深入C++实现函数itoa()的分析
  • 2017-05-28VC小技巧汇总之5则实用小技巧
  • 2017-05-28C++如何动态的生成对象详解
  • 2017-05-28C基础 redis缓存访问详解
  • 2017-05-28在C语言中转换时间的基本方法介绍
  • 2017-05-28使用C/C++语言生成一个随机迷宫游戏
  • 2017-05-28c++中八大排序算法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 解析C++中派生的概念以及派生类成员的访问属性
    • 解析C++中不能重载为友元函数的四个运算符
    • c语言实现24小时制转换为12小时制示例
    • C语言中数组作为函数的参数以及返回值的使用简单入门
    • 使用C++制作简单的web服务器
    • 详解C语言sscanf()函数、vsscanf()函数、vscanf()函数
    • C++实现不能被继承的类实例分析
    • 浅谈C++日志系统log4cxx的使用小结详解
    • C++并查集亲戚(Relations)算法实例
    • C语言中二维数组指针的简要说明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有