如何使用 C# 透過回溯查詢給定陣列中的不同子集?
不同的子集問題從給定的陣列中為我們提供了不同的組合。
當目標是 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP