Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

puffed avatar puffed 289 Точки
Best Answer

Здравей!
1. Защо пърият цикъл е само до средата на по-дългия масив? Трябва да е до края на по-късия, за да обхванеш цялото възможно съвпадение.
2. Вторият цикъл е много сбъркан. Няма да започне никога, защото първата му стойност е средата на масива, а условието е да е по-голям от дължината му. И защо започва от средата на по-дългия масив? 
3. Цялата втора проверка може да стане по няколко начина. Единият е да обърнеш единия масив с Array.Reverse(arr2) и да ги сравняваш като в първата проверка. А може да тръгнеш от краищата на всеки масив и да сравняваш всеки елемент. Аз го направих в един for цикъл, нещо такова:
        for (int i = arr1.Length - 1, j = arr2.Length - 1; i >= 0 && j >= 0; i--, j--)
        {
           if (arr1[i] == arr2[j])
            {
                commonRightLen++;
            }
            else
            {
                break;
            }
        }

 

0
06/10/2016 00:14:32
ivan.d.uzunov avatar ivan.d.uzunov 22 Точки

Благодаря! С Array.Reverse() стана много лесно. 

1
koksibg avatar koksibg 892 Точки

Ето ти моя код.

http://pastebin.com/EJLzQgNK

Едит: Малко трудно я направих, и аз се мъчих в началото.Гледай видеата там са решени някои от тях.

Arrays and Lists         Arrays and Lists - Exercises

 

0
06/10/2016 00:04:09
Vladix avatar Vladix 75 Точки

Итерациите ти трябва да са: int iterationsCount = Math.Min(arr1.Length, arr2.Length);,  за да не излезнеш от някой array. Няма нужда от толкова сложни сметки в for циклите, защото те се извършват при всяка итерация  (не съм 100% убеден) т.е бавят. Изкарвай си ги в отделни променливи + така разбираш дали са правилни по - лесно. Ето един примерен фикс :)

 

 

0
06/10/2016 00:25:13
Tihomir_Penchev avatar Tihomir_Penchev 4 Точки

Може ли малко обяснение каква е идеята на този Index=1 ? Като цяло не разбрах как работи 2рия for цикъл,идеята е че почваш отзад напред,аз лично не се сещам как става ако не са равни,как взимаме последните части на по-дългият. Виждам че идеята на index да оправи прожлема,но не разбирам как работи :)

0
Vladix avatar Vladix 75 Точки

Броят на операциите си го определихме преди първия for цикъл. Във втория тръгваме отзад напред(може и да го променим - отпред назад), то ни е само да върти iterationsCount пъти, а index-a е помощна променлива започваща от 1, за да взимаме винаги последния елемент от arr1 и arr2 (arr1[arr1.Length - index] == arr2[arr2.Length - index]). След това си е ъпдайтваме. Забелязах, че ъпдейта на index-а съм го написал в if-a, което е грешно трябва да е извън (оправено).

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.