したがって、10個の数字が与えられ、合計が100になるように、それらの中から5個の数字を選択することになっています。
今、私は明らかにプログラムを使用してそれを解決しようとし、5つのループで明白な解決策を得ました。しかし、これを行うための効率的な方法はありますか?
これがMr.Obviousです:
static void Main(string[] args)
{
int[] a = { 2, 6, 10, 14, 18, 22, 26, 30, 34, 38 };
for (int f = 0; f < a.Length - 4; f++)
{
for (int s = f+1; s < a.Length - 3; s++)
{
for (int t = s+1; t < a.Length - 2; t++)
{
for (int fr = t + 1; fr < a.Length - 1; fr++)
{
for (int ft = fr + 1; ft < a.Length; ft++)
{
int sum = a[f] + a[s] + a[t] + a[fr] + a[ft];
Console.WriteLine(sum);
if (sum == 100)
{
Console.WriteLine("---------------------------------------");
Console.WriteLine(a[f]);
Console.WriteLine(a[s]);
Console.WriteLine(a[t]);
Console.WriteLine(a[fr]);
Console.WriteLine(a[ft]);
Console.WriteLine("---------------------------------------");
}
}
}
}
}
}
Console.ReadLine();
}