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+1 开始另一个循环到数组长度
- 在循环内部,检查 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("Count of strictly increasing subarrays is " +
result);
}
}如果运行以上代码,将生成以下输出:
输出
Count of strictly increasing subarrays is 6
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP