Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để đếm cực trị cục bộ của mảng đã cho

Giả sử chúng ta có một mảng A với n phần tử. Một số phần tử của mảng A [i] này được gọi là cực tiểu cục bộ nếu và chỉ khi nó nhỏ hơn cả hai phần tử lân cận của nó. Ngoài ra, nếu nó lớn hơn các hàng xóm của nó, nó sẽ là cực đại cục bộ. Đối với A [0] và A [n-1] vì chỉ có một lân cận nên chúng không phải là cực đại hay cực tiểu. Chúng ta phải tìm số cực trị cục bộ trong mảng đã cho.

Vì vậy, nếu đầu vào là A =[1, 5, 2, 5], thì đầu ra sẽ là 2, vì 5 tại A [1] là cực đại cục bộ và 2 tại A [2] là cực tiểu cục bộ.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

 sum:=0n:=size of Afor khởi tạo i:=1, khi i  A [i + 1] và A [i]> A [i - 1]), thì:(tăng tổng lên 1) trả về tổng  

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

 #include  using namespace std; int Giải (vector  A) {int sum =0; int n =A.size (); for (int i =1; i  A [i + 1] &&A [i]> A [i - 1])) sum ++; return sum;} int main () {vector  A ={1, 5, 2, 5}; cout < 

Đầu vào

 {1, 5, 2, 5} 

Đầu ra

 2