Моля за обяснение на решението на [Judge] C# Basics -2. Pairs
https://judge.softuni.bg/Contests/6/CSharp-Basics-Exam-12-April-2014-Morning
Това което не ми е ясно защо и къде използваме този двумерен масив
int[] sums = new int[nums.Length / 2];
https://judge.softuni.bg/Contests/6/CSharp-Basics-Exam-12-April-2014-Morning
Това което не ми е ясно защо и къде използваме този двумерен масив
int[] sums = new int[nums.Length / 2];
Това не е двумерен масив, а обикновен едномерен. В решението се използва, за да се записват сумите на двойките числа.
Сумата на елементите от входа (след сплита) с индекси [0] и [1] се записва в sums с индекс [0], на двойките [2] и [3] с индекс [1] и т.н.
А защо е nums.Length / 2 аз го разбирам че ми дели цялата дължина на nums на 2 а не че ми ги зима 2 по 2
Да, точно така. Дели ти дължината на nums.
new int[nums.Length / 2] ти инициализира масив sums с максимална големина половината на nums.Length.
По-късно в първия for цикъл се случва самото пълнене.
Примерен вход --> 1 2 3 4 5 6 - масив с дължина length1 = 6. На нас обаче ни трябват поредни двойки числа. За да ни е по-лесно да боравим с тях, си правим нов масив, в който да ги пазим. Двойките при горния вход са съответно 1 + 2, 3 + 4, 5 + 6. Имаме масив от 3, 7, 11. Дължината му e length2 = 3.
length2 e точно length1 / 2.
А ако искаме да зимаме 3 числа в един елемент и да сравняваме сбора не трябва ли кода да ни е същият само да сменим 2ките с 3ки
int[] sums = new int[nums.Length / 3];
for (int i = 0; i < nums.Length - 1; i += 3)
sums[sumsIndex] = int.Parse(nums[i]) + int.Parse(nums[i + 1] + int.Parse(nums[i + 1]);
Да, обаче трябва да сме сигурни, че nums.Length % 3 == 0.
аз пробвах с 9 числа и ми се чупи
sums[sumsIndex] = int.Parse(nums[i]) + int.Parse(nums[i + 1]) + int.Parse(nums[i + 2]);
пробвах не стана 1 2 3 4 5 6 7 8 9 и ми даве max diff = 36 коеот очевидно не е верен отговор и грешката е в долното изчисление понеже където сравнява различните резултати и друго не ми дава различен отговор при написването така
sums[sumsIndex] = int.Parse(nums[i]) + int.Parse(nums[i + 1] + int.Parse(nums[i + 1]);
и така
sums[sumsIndex] = int.Parse(nums[i]) + int.Parse(nums[i + 1] + int.Parse(nums[i + 2]);