计算C ++中严格增加的子数组
给我们一个包含整数元素的数组,任务是首先从给定数组中计算出子数组,然后检查子数组中的元素是否按升序排列。如果是,那么我们将考虑该子数组,否则它将被丢弃。
如果第0位和第1位的元素不是按递增顺序排列,则此处的方法是停止进一步检查子数组。
例如-在C++中
输入:inta[]={1,7,5}
输出:严格增加的子数组的数量为1
说明- 可能的子数组包括{1,7,5},{1,7},{7,5},其中{1,7}是唯一按严格递增顺序排列的数组。
输入: inta[]={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到数组的长度开始另一个LoopFORj
在循环内部,检查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