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

การเพิ่มลำดับใน C ++


สมมติว่าเรามีอาร์เรย์จำนวนเต็ม หน้าที่ของเราคือค้นหาลำดับการเพิ่มขึ้นที่เป็นไปได้ที่แตกต่างกันทั้งหมดของอาร์เรย์ที่กำหนด และความยาวของลำดับรองที่เพิ่มขึ้นควรมีอย่างน้อย 2 ดังนั้นหากอาร์เรย์นั้นชอบ [4,6,7,7 ] จากนั้นผลลัพธ์จะเป็นเช่น − [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7 , 7], [7,7], [4,7,7].

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

  • กำหนดอาร์เรย์ที่เรียกว่า res เพื่อเก็บผลลัพธ์ทั้งหมด
  • สร้างวิธีการที่เรียกว่าแก้ปัญหา นี่จะใช้ nums array, start และ temp array
  • ถ้าขนาด temp> 1 ให้ใส่ temp ลงใน res
  • จัดชุดที่เรียกว่ามาเยี่ยม
  • สำหรับ i ในช่วงเริ่มต้นที่ขนาดของ nums
    • x :=nums[i]
    • ถ้า x อยู่ในเซตที่เข้าชม ให้ข้ามส่วนถัดไปของลูป
    • ใส่ x ลงในชุดที่เข้าชมแล้ว
    • ถ้า temp ว่างหรือองค์ประกอบสุดท้ายของ temp <=x แล้ว
      • ใส่ x ลงในอุณหภูมิ
      • เรียกแก้ปัญหา (nums, i + 1, ชั่วคราว)
      • ลบหนึ่งองค์ประกอบจากจุดสิ้นสุดของอุณหภูมิ
  • จากวิธีหลัก เรียก Solve(nums, 0, temp)
  • ผลตอบแทน

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

ตัวอย่าง

#include ใช้เนมสเปซ std;void print_vector(vector> v){ cout <<"["; for(int i =0; i> res; โมฆะแก้ ( vector &nums, int start, vector  temp){ if(temp.size()> 1){ res.push_back(temp); } ตั้งค่า  เข้าชม; สำหรับ(int i =start; i > findSubsequences(vector&nums) { res.clear(); เวกเตอร์  อุณหภูมิ; แก้ (nums, 0, อุณหภูมิ); ผลตอบแทน res; }};main(){ vector v ={5,6,7,8}; โซลูชัน ob; print_vector(ob.findSubsequences(v));}

อินพุต

[4,6,7,8]

ผลลัพธ์

<ก่อนหน้า>[[5, 6, ],[5, 6, 7, ],[5, 6, 7, 8, ],[5, 6, 8, ],[5, 7, ],[5, 7, 8, ],[5, 8, ],[6, 7, ],[6, 7, 8, ],[6, 8, ],[7, 8, ],]