เราได้รับอาร์เรย์ทุกขนาดและภารกิจคือการค้นหาอาร์เรย์ย่อยของอาร์เรย์ที่กำหนดโดยองค์ประกอบที่มีความแตกต่างระหว่างองค์ประกอบที่อยู่ติดกันเป็น 0 หรือ 1
ป้อนข้อมูล − int arr[] ={ 2, 1, 5, 6, 3, 4, 7, 6}
ผลผลิต − อาร์เรย์ย่อยความยาวสูงสุดที่มีความแตกต่างระหว่างองค์ประกอบที่อยู่ติดกันเนื่องจาก 0 หรือ 1 คือ − 2
คำอธิบาย − องค์ประกอบที่อยู่ติดกันในอาร์เรย์ที่มีความแตกต่างเป็น 0 หรือ 1 คือ {2, 1}, {5, 6}, { 3, 4} และ {7.6} ดังนั้น ความยาวสูงสุดของอาร์เรย์ย่อยคือ 2
ป้อนข้อมูล − int arr[] ={ 2, 1, 7, 6, 5}
ผลผลิต − อาร์เรย์ย่อยความยาวสูงสุดที่มีความแตกต่างระหว่างองค์ประกอบที่อยู่ติดกันเนื่องจาก 0 หรือ 1 คือ − 3
คำอธิบาย − องค์ประกอบที่อยู่ติดกันในอาร์เรย์ที่มีค่าความแตกต่างเป็น 0 หรือ 1 คือ {2, 1} และ {7, 6, 5}.. ดังนั้น ความยาวสูงสุดของอาร์เรย์ย่อยคือ 3
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
- ป้อนอาร์เรย์ของจำนวนเต็มประเภทซึ่งสามารถประกอบด้วยองค์ประกอบบวกและลบได้
- คำนวณขนาดของอาร์เรย์และส่งอาร์เรย์และขนาดไปยังฟังก์ชันเพื่อการทำงานเพิ่มเติม
- นำตัวแปรชั่วคราว i และตั้งค่าเป็น 0 และตัวแปรสูงสุดแล้วตั้งค่าเป็น 0
- เริ่มลูปตั้งแต่ i จนถึงขนาดของอาร์เรย์
- ภายในลูป ตั้งค่า j เป็น i
- เริ่มลูปอื่นซึ่งจะคำนวณอาร์เรย์ย่อยด้วยองค์ประกอบที่อยู่ติดกันไม่ว่าจะเป็น 0 หรือไม่
- ภายในลูป ให้เพิ่มค่าของ i
- ตั้งค่าอุณหภูมิเป็น i-j+1
- ตรวจสอบว่าค่าสูงสุดน้อยกว่าอุณหภูมิหรือไม่ จากนั้นตั้งค่าสูงสุดเป็นอุณหภูมิ
- ตรวจสอบว่า j เท่ากับ i หรือไม่ จากนั้นให้เพิ่มค่าของ i
- ผลตอบแทนสูงสุด
- พิมพ์ผลลัพธ์
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; //function to calculate maximum Length subarray with // 0 or 1 difference between adjacent elements int maximum_diff(int arr[], int size){ int i = 0; int maximum = 0; while (i < size){ int j = i; while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){ i++; } int temp = i - j + 1; if (maximum < temp){ maximum = temp; } if(j == i){ i++; } } return maximum; } int main(){ int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum length subarray with difference between adjacent elements as either 0 or 1 are: "<< maximum_diff(arr, size); }
อินพุต
Maximum length subarray with difference between adjacent elements as either 0 or 1 are: 2