JZ-C-41-Plus

Posted 回看欧洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JZ-C-41-Plus相关的知识,希望对你有一定的参考价值。

剑指offer第四十一题-拓展:和为s的连续正数序列:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)

 1 //============================================================================
 2 // Name        : JZ-C-41-Plus.cpp
 3 // Author      : Laughing_Lz
 4 // Version     :
 5 // Copyright   : All Right Reserved
 6 // Description : 和为s的连续正数序列:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)
 7 //============================================================================
 8 
 9 #include <iostream>
10 #include <stdio.h>
11 using namespace std;
12 
13 void PrintContinuousSequence(int small, int big);
14 
15 void FindContinuousSequence(int sum) {
16     if (sum < 3)
17         return;
18 
19     int small = 1;
20     int big = 2;
21     int middle = (1 + sum) / 2;
22     int curSum = small + big; //这里curSum其实是从small到big之间所有数字的累加和
23 
24     while (small < middle) {
25         if (curSum == sum)
26             PrintContinuousSequence(small, big);
27 
28         while (curSum > sum && small < middle) {
29             curSum -= small; //每次更新curSum值
30             small++;
31 
32             if (curSum == sum)
33                 PrintContinuousSequence(small, big);
34         }
35 //        while (curSum <= sum && small < middle) { //自己写的还是不如源码啊。。清晰却不简洁
36 //            big++;
37 //            curSum += big;
38 //            if (curSum >= sum)
39 //                break;
40 //        }
41         big++;
42         curSum += big; //每次更新curSum值
43     }
44 }
45 
46 void PrintContinuousSequence(int small, int big) {
47     for (int i = small; i <= big; ++i)
48         printf("%d ", i);
49 
50     printf("\n");
51 }
52 
53 // ====================测试代码====================
54 void Test(char* testName, int sum) {
55     if (testName != NULL)
56         printf("%s for %d begins: \n", testName, sum);
57 
58     FindContinuousSequence(sum);
59 }
60 
61 int main(int argc, char** argv) {
62     Test("test1", 1);
63     Test("test2", 3);
64     Test("test3", 4);
65     Test("test4", 9);
66     Test("test5", 15);
67     Test("test6", 100);
68 
69     return 0;
70 }

 

以上是关于JZ-C-41-Plus的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数