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
廣告