不同的子集问题为我们提供了给定数组的不同组合。当目标为 2 时,则从数组中获取对应于数字 2 的所有组合,当目标为 3 时,则从数组中获取对应于计数 3 的所有组合。在下面的示例中,数组为 [1, 2, 3],目标为 2。因此,我们获取了对应于数字 2 的所有组合“1, 2”、“2, 3”、“1, 3”。示例 Live Demousing System; using System.Collections.Generic; using System.Text; using System.Linq; namespace ConsoleApplication{ public class BackTracking{ public ... 阅读更多
此问题可以分解为更小、更简单的“子问题”,可以进一步划分为更简单、更小的子问题。我们逐个获取每个数字,并且从任何数字计数所有可获取的 ndigits,使用映射来存储从每个数字可获取的数字映射。当数字变为 n 位数时,更新计数。示例 Live Demousing System; using System.Collections.Generic; namespace ConsoleApplication{ public class BackTracking{ private string GetKeyPadValueBasedOnInput(string digit){ Dictionary keypad = new Dictionary(); keypad.Add("2", "abc"); keypad.Add("3", "def"); ... 阅读更多
找到第一个位置中的字符,并用其余的字符替换第一个字符。比如在 ABC 中,在第一次迭代时,通过将 A 分别与 A、B 和 C 交换,形成了三个字符串:ABC、BAC 和 CBA。对其余字符重复该步骤,比如固定第二个字符 B 等。现在再次交换以返回到前一个位置。从 ABC 中,我们通过再次固定 B 形成 ABC,然后回溯到前一个位置,并将 B 与 C 交换。因而,我们现在得到了 ABC 和 ACB。示例 Live Demousing System; 名称空间 ConsoleApplication{... 阅读更多