private static int BruteForce(int[] tasks) { int min = int.MaxValue; foreach (int[] permutation in OptimumAssignmentOfTasks.Permutations(tasks, 0)) { int max = int.MinValue; for (int i = 0; i < permutation.Length / 2; i++) { max = Math.Max(max, permutation[i] + permutation[permutation.Length - i - 1]); } min = Math.Min(min, max); } return(min); }
private static IEnumerable <int[]> Permutations(int[] data, int index) { if (index == data.Length) { yield return(data); } for (int i = index; i < data.Length; i++) { ArrayUtilities.Swap(data, i, index); foreach (int[] permutation in OptimumAssignmentOfTasks.Permutations(data, index + 1)) { yield return(permutation); } ArrayUtilities.Swap(data, i, index); } }