C++计算总和为n的连续列表个数的程序

假设我们有一个数字 n,我们必须找到总和为 n 的正连续值列表的数量。

所以,如果输入像 n = 15,那么输出将是 4,因为可能的列表是:[1, 2, 3, 4, 5], [4, 5, 6], [7, 8],和 [15]。

为了解决这个问题,我们将按照以下步骤操作:

  • 开始:= 1, 结束:= 1, x := (n + 1)

  • 总和:= 0

  • 而结束 <= x,做:

    • 如果 sum 与 n 相同,则:

    • sum := sum - 开始

    • (开始增加 1)

    • (计数增加 1)

    • 总和:=总和+结束

    • 当 sum >= n 时,请执行以下操作:

    • (增加1)

    • 返回计数 + 1

    让我们看下面的实现来更好地理解:

    示例

    #include

    using namespace std;

    int solve(int n) {

       int begin=1,end=1,x=(n+1)/2,count=0;

       long int sum=0;

       while(end <= x){

          sum += end;

          while(sum >= n){

             if(sum == n)

                count++;

             sum -= begin;

             begin++;

          }

          end++;

       }

       return count+1;

    }

    main(){

       cout << (solve(15));

    }

    输入

    15
    输出结果
    4

    以上是 C++计算总和为n的连续列表个数的程序 的全部内容, 来源链接: utcz.com/z/357999.html

    回到顶部