zoukankan      html  css  js  c++  java
  • 编程算法

    和为s的连续正整数序列 代码(C)


    本文地址: http://blog.csdn.net/caroline_wendy


    题目: 输入一个正数s, 打印出全部和为s的连续正数序列(至少含有两个数).


    起始于1, 2, 相加, 假设相等则返回, 假设小于, 则前端递增右移, 假设大于, 则后端递增右移, 一直到后端移动到s的一半位置.

    由于两个数, 小数为一半, 大数为一半加一, 则必定结束.


    代码:

    /*
     * main.cpp
     *
     *  Created on: 2014.6.12
     *      Author: Spike
     */
    
    /*eclipse cdt, gcc 4.8.1*/
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void PrintContinuousSequence(int small, int big)
    {
    	for (int i=small; i<=big; ++i)
    		printf("%d ", i);
    	printf("
    ");
    }
    
    void FindContinuousSequence(int sum) {
    	if (sum<3)
    		return;
    	int small = 1;
    	int big = 2;
    	int middle = (1+sum)/2;
    	int curSum = small+big;
    	while (small < middle) {
    		if (curSum == sum)
    			PrintContinuousSequence(small, big);
    		while (curSum > sum && small < middle) {
    			curSum -= small;
    			small++;
    			if(curSum == sum)
    				PrintContinuousSequence(small, big);
    		}
    		big++;
    		curSum += big;
    	}
    }
    
    int main(void)
    {
    	FindContinuousSequence(15);
    	return 0;
    }
    

    输出:

    1 2 3 4 5 
    4 5 6 
    7 8 
    





  • 相关阅读:
    docker入门(一)
    netstat命令
    grep的小技巧
    gd库的安装
    jar命令的用法详解
    关于awk的范围模式功能问题
    更换文本中第二次出现的字符串内容
    awk打印第n个参数到最后一个技巧/将n行组成一列
    awk -f program.file 功能使用
    shell的变量处理
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6955353.html
Copyright © 2011-2022 走看看