收藏 分销(赏)

连续正整数的算法.doc

上传人:pc****0 文档编号:7257840 上传时间:2024-12-28 格式:DOC 页数:3 大小:32KB 下载积分:10 金币
下载 相关 举报
连续正整数的算法.doc_第1页
第1页 / 共3页
连续正整数的算法.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
数据结构:连续正整数的算法实现方法 题目描述:   一个正整数有可能可以被表示为n(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   评分标准:   程序输出结果是否正确。   算法思想:   比较简单,这里不再赘述   代码如下:   /**//************************************************************************   * 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:   * 15=1+2+3+4+5   * 15=4+5+6   * 15=7+8   * 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列   ************************************************************************/   #include <stdio.h>   #include <VECTOR>   using namespace std;   class PositiveInteger   ...{   public:   vector <int> m_vecBegin;//the begin integer of the sequence   vector <int> m_vecEnd; //the end integer of the sequence   public:   PositiveInteger()   ...{   m_vecBegin.clear();   m_vecEnd.clear();   }   ~PositiveInteger()...{}   void GetIntegerSequence(int n);   void display(int n);   };   void PositiveInteger::GetIntegerSequence(int n)   ...{   int i,sum,begin;   i=begin=1;   sum=0;   while(begin<=n/2)   ...{   sum+=i++;   if(sum==n)   ...{   m_vecBegin.push_back(begin);   m_vecEnd.push_back(i-1);   i=++begin;   sum=0;   }   else if(sum>n)   ...{   i=++begin;   sum=0;   }   }   }   void PositiveInteger::display(int n)   ...{   int size=m_vecBegin.size();   if(size==0)   ...{   printf(\" NONE \");   }   else   ...{   for(int i=0;i<size;i++)   ...{   printf(\" %d=%d\",n,m_vecBegin.at(i));   for(int j=m_vecBegin.at(i)+1;j<=m_vecEnd.at(i);j++)   printf(\"+%d\",j);   }   printf(\" \");   }   }   //显示菜单   void show_menu()   ...{   printf(\"--------------------------------------------- \");   printf(\"input command to test the program \");   printf(\" i or I : input n to test \");   printf(\" q or Q : quit \");   printf(\"--------------------------------------------- \");   printf(\"$ input command >\");   }   void main()   ...{   char sinput[10];   int n;   show_menu();   scanf(\"%s\",sinput);   while(stricmp(sinput,\"q\")!=0)   ...{   if(stricmp(sinput,\"i\")==0)   ...{   printf(\" please input an integer:\");   scanf(\"%d\",&amp;n);   PositiveInteger obj;   obj.GetIntegerSequence(n);   obj.display(n);   }   //输入命令   printf(\"$ input command >\");   scanf(\"%s\",sinput);   }   }  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服