C++中如何计算一个数组中严格增加的子数的数量

113 阅读1分钟

问题

给定一个数组,计算其中严格增加的子数的总数。

输入样本

[1, 2, 3, 1]

输出示例

3

解释

假设一个严格增加的子数组的端点是 startend。那么,如果子数组 arr[start, end+1] 的元素是严格增加的,如果 end+1 的元素大于 end的元素

同样的道理也适用于在 end+1, end+2… 的元素也是如此,以此类推。

C++编程

#include <iostream>
using namespace std;
 
int solve(int arr[], int n)
{

    int ans = 0;
 
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (arr[j - 1] >= arr[j])
            {
                break;
            }
            ans++;
        }
    }
 
    return ans;
}
 
int main()
{
    int arr[] = { 1, 2, 3, 2 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
      cout << solve(arr, n);
 
    return 0;
}

输出

3

C语言编程

#include <stdio.h>
 
int solve(int arr[], int n)
{

    int ans = 0;
 
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {

            if (arr[j - 1] >= arr[j])
            {

                break;
            }
            ans++;
        }
    }
 
    return ans;
}
 
int main()
{
    int arr[] = { 1, 2, 3, 2 };
    int n = sizeof(arr) / sizeof(arr[0]);
 
      printf("%d",solve(arr, n));
 
    return 0;
}

输出

3

Python编程

def solve(arr):
 
    ans = 0
 
    for i in range(len(arr)):
        for j in range(i + 1, len(arr)):

            if arr[j - 1] >= arr[j]:

                break
 

            ans = ans + 1
 
    return ans
 
 
arr = [1, 2, 3, 2]
 
print(solve(arr))

输出

3