算法题目---计算数字连续和

xiaoxiao2021-02-28  88

输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。

void PrintContinuousSequence(int small,int big) {     for(int i = small;i <= big;++i)         printf("%d ",i);     printf("\n"); } void FindContinusSequence(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;     } } void Test(char* testName, int sum) {     if(testName != NULL)         printf("%s for %d begins: \n", testName, sum);     FindContinusSequence(sum); } int main() {     Test("test1", 1);     Test("test2", 3);     Test("test3", 4);     Test("test4", 9);     Test("test5", 15);     Test("test6", 100);     return 0; }

转载请注明原文地址: https://www.6miu.com/read-76246.html

最新回复(0)