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

ชุดค่าผสมใน C++


สมมติว่าเรามีจำนวนเต็มสองจำนวน n และ k เราต้องหาตัวเลข k ที่เป็นไปได้ทั้งหมดจาก 1 ... n ดังนั้น ถ้า n =4 และ k =2 ผลรวมจะเป็น [1,2],[1,3],[1,4],[2,3],[2,4],[3,4 ]]

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

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

ตัวอย่าง

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

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

อินพุต

53

ผลลัพธ์

<ก่อน>[[1,2,3],[1,2,4],[1,2,5],[1,3,4],[1,3,5],[1,4,5 ],[2,3,4],[2,3,5],[2,4,5],[3,4,5]]