Даже суммы-это игра для двух игроков, в c#.
Даже суммы-это игра для двух игроков. Игроки получают последовательность из N положительных целых чисел и поочередно сменяют друг друга. В каждом повороте игрок выбирает непустой срез (подпоследовательность последовательных элементов) таким образом, чтобы сумма значений в этом срезе была четной, затем удаляет срез и объединяет оставшиеся части последовательности. Первый игрок, который не может сделать законный ход, проигрывает игру.
Вы играете в эту игру против своего противника и хотите знать, можете ли вы выиграть, предполагая, что и вы, и ваш противник играете оптимально. Ты двигаешься первым.
Напишите функцию:
class Solution { public string solution(int[] A); }
это, учитывая нулевой индексированный массив A, состоящий из N целых чисел, возвращает строку формата "X, Y", где X и Y являются соответственно первой и последней позициями (включительно) среза, который вы должны удалить на первом ходу, чтобы выиграть, предполагая, что у вас есть выигрышная стратегия. Если существует более одного такого выигрышного среза, функция должна вернуть тот, который имеет наименьшее значение X. Если существует более одного среза с наименьшим значением X, функция должна возвращать самый короткий. Если у вас нет выигрышной стратегии, функция должна вернуть "нет решения".
Например, учитывая следующий массив:
A[0] = 4
A[1] = 5
A[2] = 3
A[3] = 7
A[4] = 2
функция должна возвращать "1,2". После удаления среза из позиций 1-2 (с четной суммой 5 + 3 = 8) оставшийся массив равен [4, 7, 2]. Тогда противник сможет удалить первый элемент (из четной суммы 4) или последний элемент (из четной суммы 2). После этого вы можете сделать ход, который оставляет массив, содержащий только [7], так что ваш противник не будет иметь законного хода и проиграет. Одна из возможных игр показана на следующем рисунке:
Обратите внимание, что удаление среза " 2,3 " (с четной суммой 3 + 7 = 10) также является выигрышным ходом, но срез "1,2" имеет меньшее значение X.
Для следующего массива:
A[0] = 2
A[1] = 5
A[2] = 4
функция должна возвращать "нет решения", так как нет стратегии, гарантирующей вам выигрыш.
Что:
N-целое число в диапазоне [1..100 000];
каждый элемент массива A является целым числом в диапазоне [1..1 000 000 000].
Сложность:
ожидаемая наихудшая временная сложность равна O (N);
ожидаемая наихудшая сложность пространства - O (N), выходящая за пределы входного хранилища (не считая хранилища, необходимого для входных аргументов).
Элементы входных массивов могут быть изменены.
Что я уже пробовал:
public static int solution(int[] A) { // write your code in C# 6.0 with .NET 4.5 (Mono) int[] forw = new int[A.Length]; int[] rewi = new int[A.Length]; bool isAllNeg = true; for (int i = 1; i < A.Length; i++) { forw[i] = Math.Max(0, forw[i - 1] + A[i]); if (A[i] > 0 && isAllNeg) isAllNeg = false; } if (isAllNeg) { return 0; } for (int i = A.Length - 2; i >= 0; i--) { rewi[i] = Math.Max(0, rewi[i + 1] + A[i]); } int maxsum = 0; for (int i = 1; i < A.Length - 1; i++) { maxsum = Math.Max(maxsum, forw[i - 1] + rewi[i + 1]); } return maxsum; }
ошибка компиляции: не удается неявно преобразовать int в string.
может ли кто-нибудь мне помочь
Спасибо
F-ES Sitecore
На какой линии находится ошибка?