计算C ++中严格增加的子数组

给我们一个包含整数元素的数组,任务是首先从给定数组中计算出子数组,然后检查子数组中的元素是否按升序排列。如果是,那么我们将考虑该子数组,否则它将被丢弃。

如果第0位和第1位的元素不是按递增顺序排列,则此处的方法是停止进一步检查子数组。

例如-在C ++中

输入: int a [] = {1,7,5}

输出:严格增加的子数组的数量为1

说明- 可能的子数组包括{1,7,5},{1,7},{7,5},其中{1,7}是唯一按严格递增顺序排列的数组。

输入:  int a [] = {1,2,7,10}

输出:严格增加的子数组的数量为6

说明 -可能的子数组包括{{1,2},{1、2、7},{1、2、7、10},{2、7},{2、7、10}和{7、10}并且所有这些都严格按照递增顺序排列。

以下程序中使用的方法如下

  • 声明一个数组,输入元素,然后将数据与数组的长度一起传递给名为countIncSubarrays(a,a.length)的函数,以进行进一步处理。

  • 在函数内部,初始化一个计数标志。

  • 从0开始到i的循环直到数组的长度

  • 在循环内部,从i + 1到数组的长度开始另一个Loop FOR j

  • 在循环内部,检查a [j]是否大于a [j-1]并增加计数。

  • 否则,由于递增顺序检查失败,因此中断了循环。

  • 在主函数中,从函数调用中捕获结果,并将其打印为输出。

示例

import java.util.*;
class testqwe {
   static int MAX = 4;
   static int a[] = new int[MAX];
   static Scanner scan = new Scanner(System.in);
   static int countIncSubarrays(int a[], int n) {

      int count = 0;
      for (int i = 0; i < n; i++) {
         for (int j = i + 1; j < n; j++) {
            if (a[j] > a[j - 1])
               count++;
            else
               break;
         }
      }
      return count;
   }

   public static void main(String[] args) {
      for (int i = 0; i < a.length; i++) {
         a[i] = scan.nextInt(); //1,2,7,0
      }
      int result = countIncSubarrays(a, a.length);
      System.out.println("严格增加的子数组的计数是 " +
         result);
   }
}

如果我们运行上面的代码,它将生成以下输出-

输出结果

严格增加的子数组的计数是 6

猜你喜欢