Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C ++ เพื่อนับ extrema ในพื้นที่ของอาร์เรย์ที่กำหนด


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n องค์ประกอบบางอย่างของอาร์เรย์ A[i] นี้เรียกว่าค่าต่ำสุดในพื้นที่ก็ต่อเมื่อมีค่าน้อยกว่าเพื่อนบ้านทั้งสองอย่างเคร่งครัด นอกจากนี้หากมากกว่าเพื่อนบ้านอย่างเคร่งครัด จะเป็นค่าสูงสุดในพื้นที่ สำหรับ A[0] และ A[n-1] เนื่องจากมีเพื่อนบ้านเพียงคนเดียวจึงไม่ใช่ maxima หรือ minima เราต้องหาจำนวน local extrema ในอาร์เรย์ที่กำหนด

ดังนั้น หากอินพุตเป็นเหมือน A =[1, 5, 2, 5] เอาต์พุตจะเป็น 2 เนื่องจาก 5 ที่ A[1] เป็นค่าสูงสุดในเครื่อง และ 2 ที่ A[2] คือค่าต่ำสุดในเครื่อง

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

sum :=0n :=size of Afor initialize i :=1, when i  A[i + 1] และ A[i]> A[i - 1]) จากนั้น:(เพิ่มผลรวมโดย 1) ผลรวมคืน 

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include ใช้เนมสเปซ std;int แก้ (เวกเตอร์ A){ ผลรวม int =0; int n =A.size(); สำหรับ (int i =1; i  A[i + 1] &&A[i]> A[i - 1])) ผลรวม++; ผลตอบแทนรวม;}int main(){ vector A ={ 1, 5, 2, 5 }; ศาล <<แก้ (A) < 

อินพุต

{ 1, 5, 2, 5 }

ผลลัพธ์

2