25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

262 Въведение в програмирането със C#<br />

26. Напишете програма, която обхожда матрица (NxN) по следния начин:<br />

Пример за N=4:<br />

16 15 13 10<br />

14 12 9 6<br />

11 8 5 3<br />

7 4 2 1<br />

7 11 14 16<br />

4 8 12 15<br />

2 5 9 13<br />

1 3 6 10<br />

27. *Напишете програма, която по подадена матрица намира най-голямата<br />

област от еднакви числа. Под област разбираме съвкупност от съседни<br />

(по ред и колона) елементи. Ето един пример, в който имаме област,<br />

съставена от 13 на брой еднакви елементи със стойност 3:<br />

Решения и упътвания<br />

1. Използвайте масив int[] и for цикъл.<br />

1<br />

3<br />

4<br />

4<br />

4<br />

3<br />

3<br />

3<br />

3<br />

3<br />

2<br />

3<br />

1<br />

1<br />

3<br />

2<br />

2<br />

2<br />

3<br />

3<br />

2. Два масива са еднакви, когато имат еднаква дължина и стойностите на<br />

елементите в тях съответно съвпадат. Второто условие можете да<br />

проверите с for цикъл.<br />

3. При лексикографската наредба символите се сравняват един по един<br />

като се започва от най-левия. При несъвпадащи символи по-рано е<br />

масивът, чийто текущ символ е по-рано в азбуката. При съвпадение се<br />

продължава със следващия символ вдясно. Ако се стигне до края на<br />

единия масив, по-краткият е лексикографски по-рано. Ако всички<br />

съответни символи от двата масива съвпаднат, то масивите са еднакви<br />

и никой от тях не е по-рано в лексикографската наредба.<br />

4. Сканирайте масива отляво надясно. Всеки път, когато текущото число<br />

е различно от предходното, от него започва нова подредица, а всеки<br />

път, когато текущото число съвпада с предходното, то е продължение<br />

на текущата подредица. Следователно, ако пазите в две променливи<br />

start и len съответно индекса на началото на текущата подредица от<br />

еднакви елементи (в началото той е 0) и дължината на текущата<br />

подредица (в началото той е 1), можете да намерите всички подредици<br />

от еднакви елементи и техните дължини. От тях лесно може да се<br />

избере най-дългата и да се запомня в две допълнителни променливи –<br />

bestStart и bestLen.<br />

2<br />

4<br />

3<br />

3<br />

1<br />

4<br />

4<br />

3<br />

1<br />

1<br />

13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!