如何通过使用 C# 回溯获得手机中键盘值的所有组合?
问题可以分解为更小更简单的“子问题”,这些“子问题”可以进一步细分为更简单和更小的子问题。我们一个一个地取每一个数字并计算从任何数字可达的所有 ndigits,使用一个映射来存储从每个数字可达的数字的映射。当数字变为 n 位时,更新计数。
示例
using 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");
keypad.Add("4", "ghi");
keypad.Add("5", "jkl");
keypad.Add("6", "mno");
keypad.Add("7", "pqrs");
keypad.Add("8", "tuv");
keypad.Add("9", "wxyz");
return keypad.GetValueOrDefault(digit);
}
public void FindSequence(string currentList, string digits, List output){
if (digits.Length == 0){
output.Add(currentList);
return;
}
else{
string digit = digits.Substring(0, 1);
string letters = GetKeyPadValueBasedOnInput(digit);
for (int i = 0; i < letters.Length; i++){
char letter = GetCHarFromString(letters, i);
FindSequence(currentList + letter, digits.Substring(1), output);
}
}
}
private char GetCHarFromString(string letters, int value){
char[] charArr = letters.ToCharArray();
return charArr[value];
}
}
class Program{
static void Main(string[] args){
BackTracking b = new BackTracking();
List<string> output = new List<string>();
b.FindSequence("", "34", output);
foreach (var item in output){
Console.WriteLine(item);
}
}
}
}
dgdh
di
eg
eh
ei
fg
fh
fi
以上是 如何通过使用 C# 回溯获得手机中键盘值的所有组合? 的全部内容, 来源链接: utcz.com/z/338720.html