Алгоритм подбора чисел, сумма которых равна определенному значению - C# (191155)
Формулировка задачи:
Есть число из 11 цифр, сума которых известна и равняется х, какой алгоритм нужен чтобы узнать все возможные вариации чисел, заранее спасибо ?
Решение задачи: «Алгоритм подбора чисел, сумма которых равна определенному значению»
textual
Листинг программы
static void Main(string[] args)
{
try
{
GetList(11, 30).ForEach(a => Console.WriteLine(string.Join(string.Empty, a)));
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.WriteLine("\nComplite");
Console.ReadKey();
}
/// <summary>
///
/// </summary>
/// <param name="countChar">Количество цифр</param>
/// <param name="sum">Сумма цифр</param>
/// <returns></returns>
public static List<int[]> GetList(int countChar, int sum)
{
if (countChar < 1)
{
throw new ArgumentException("countChar должно бьіть больше нуля и цельім", "countChar");
}
var list = new int[countChar];
var result = new List<int[]>();
runLine(0, list, sum, result);
return result;
}
private static void runLine(int index, int[] list, int sum, List<int[]> result)
{
if (index < list.Length)
{
for (var i = (index == 0 ? 1 : 0); i < 10; i++)
// index == 0 ? 1 : 0
// тернарньій оператор
// нужен, чтобьі определить первую цифру в последовательности и не задавать ее, как ноль
{
list[index] = i;
runLine(index + 1, list, sum, result);
}
}
else
{
if (list.Sum() == sum)
result.Add((int[])list.Clone());
}
}