Итак, проблема, с которой я сталкиваюсь, заключается в создании всех доступных буквенных комбинаций, моя проблема - клавиатура телефона. По сути, если мое «n» равно 1, я могу вывести только «a, d, g, j, m, p, t, w», число которых равно 8, и если мое «n» равно 2, я могу вывести «a, b». , д, е ... аа, дд ... "и так далее. Так что, где я застрял, сейчас пытается придумать алгоритм, который бы использовал либо рекурсивное, либо динамическое c программирование. Поэтому мне нужна помощь, как я мог бы go просмотреть свой список и проверить, основываясь ли на оставленных мной нажатиях, как я мог бы добавить еще одну букву к комбинациям, которые уже есть в моем списке? (Вот немного кода, который у меня есть)
using System;
using System.Collections.Generic;
class Press
{
static List<String> letterCombinationsUtil(int[] number,
int n, String[] table)
{
int cnt = n;
List<String> list = new List<String>();
int count = 0;
while (count < 8)
{
int b = 0;
int k = cnt;
int c = 0;
String val = table[number[count]];
for (int i = 0; i < val.Length; i++)
{
if (b < k)
{
list.Add(val[i].ToString());
}
b++;
if (b == k)
break;
}
count++;
}
//count = 0;
//while (count < 8)
//{
// int b = 0;
// int k = cnt;
// int c = 0;
// String val = table[number[count]];
// for (int i = 0; i < list.Count; i++)
// {
// for(int j = 0; j< val.Length; j++)
// {
// if (c == i)
// list.Add(list[i]+val[i].ToString());
// c++;
// if (c == k)
// break;
// }
// }
// count++;
//}
return list;
}
static int letterCombinations(int[] number, int n)
{
String[] table = { "", "", "abc", "def", "ghi", "jkl",
"mno", "pqrs", "tuv", "wxyz" };
List<String> list =
letterCombinationsUtil(number, n, table);
for (int i = 0; i < list.Count; i++)
{
Console.Write(list[i] + " ");
}
return list.Count;
}
public static void Main(String[] args)
{
int[] number = { 2, 3 ,4,5,6,7,8,9};
int n = 1;
Console.WriteLine(letterCombinations(number,1));
}
}