ปัญหาชุดย่อยที่แตกต่างกันทำให้เรามีชุดค่าผสมที่แตกต่างจากอาร์เรย์ที่กำหนด
เมื่อเป้าหมายเป็น 2 จากนั้นจากอาร์เรย์ เราจะนำชุดค่าผสมทั้งหมดที่ตรงกับหมายเลข 2 เมื่อเป้าหมายเป็น 3 จากนั้นจากอาร์เรย์ เราจะนำชุดค่าผสมทั้งหมดที่สอดคล้องกับการนับ 3 ในตัวอย่างด้านล่าง อาร์เรย์คือ [ 1,2,3] และเป้าหมายคือ 2 ดังนั้นเราจึงนำชุดค่าผสมทั้งหมดที่ตรงกับหมายเลข 2 “1,2 “, “2,3”,”1,3”” มารวมกัน
ตัวอย่าง
using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace ConsoleApplication{ public class BackTracking{ public void Subsets(int[] array){ List<int> currentList = new List<int>(); List<string> results = new List<string>(); BackTrackkingCombination(array, 2, 0, currentList, results); foreach (var item in results){ StringBuilder s = new StringBuilder(); foreach (var item1 in item){ s.Append(item1.ToString()); } Console.WriteLine(s); s = null; } } public void BackTrackkingCombination(int[] array, int size, int startIndex, List<int> currentList, List<string> results){ if (currentList.Count == size){ StringBuilder s = new StringBuilder(); foreach (var item in currentList){ s.Append(item); } results.Add(s.ToString()); return; } for (int i = startIndex; i < array.Length; i++){ currentList.Add(array[i]); BackTrackkingCombination(array, size, i + 1, currentList, results); ; currentList.Remove(array[i]); } } } class Program{ static void Main(string[] args){ BackTracking b = new BackTracking(); int[] arrs = { 1, 2, 3 }; b.Subsets(arrs); } } }
ผลลัพธ์
12 13 23