Loading...
quickben avatar quickben 966 Точки

[Useful Info] C# Basics Exam - Лесен начин да не ни дава "Лимит време" и "Лимит памет"

Колеги искам да споделя един "hint" относно задачите със вложени цикли. (№4)

Ако се получава така, че програмата ви дава правилни резултати, но Judge-a ви дава "лимит време" и/или "лимит памет" и не се сещате за друго решение или нямате време да го измислите има сравнително лесен начин да използвате вашето работещо решение.

Просто го напишете на C++. 

Явно C++ работи по-бързо от C# и използва по-малко памет и по този начин ако прехвърляте лимитите в разумни граници мисля, че е най-лесно просто да използваме опцията в Judge-a да предадем код на C++.

Да, но аз не съм писал никога на C++! - Няма значение, както ни е казвано хиляда пъти тук се учим първо на програмни принципи и практики и след това на определени езици и тн.

Какво ни трябва:

1. Една добра книга за C++ (примерно ТАЗИ )

Просто за да видим разликите в синтаксиса, въобще не ни трябва да задълбаваме особенно на изпита.

Използваме search опцията в нашата програма за да пестим време.

2. Компилатор ( ТОЗИ е доста лесен за употреба, буквално Next Next Finish )

Реално и компилатор не ни трябва, но judge-a има малък прозорец и на мен ми е по лесно да си напиша решението в компилатора и после да го копирам.

Ето и един пример. Задача №4 Poker Straight от C# Basics 28 April

Докарах я да ми вади правилни резултати, но ми дава лимит време. Пробрах доста неща, нищо не помогна. Даже помолих за помощ колегите във форума и те естествено ми преложиха различни варианти за решението на задачата, но ми е трудно да разбера логиката на друг човек, а на изпита се съмнявам, че mihayloff14 или nikola.m.nikolov (или някой друг напреднал колега) ще са до мен да ударят едно рамо :) Истината е, че просто нямам време(мързел?) да се уча да решавам този тип задачи по-друг начин, определено ще положа усилия в тази насока след изпита но 1-2 дена мисля, че за мен са малко за да си променя "мисленето" относно определени задачи.

Poker Straight C#   Memory: 8.13 MB | Time: 0.452s | Points 0/100 

Poker Straight C++ Memory: 2.83 MB | Time: 0.122 s | Points 100/100

За мен има само една съществена разлика и тя е, че в C++ всички променливи трябва да бъдат декларирани и инициализирани преди употребата им. Judge системата даже си казва.

Вярно е, че този тип решения са "тромави", но на 25-ти нямаме изпит по КПК :-)

ENJOY!

Тагове:
5
Programming Basics
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Оттук идва и въпросът - дали judge системата поддържа unsafe код, така няма да е нужно да се пише на c++ и пак ще е бързо.

0
quickben avatar quickben 966 Точки

Ако говориш за keyword-а "unsafe" в C# лично аз не знам дали Judge-a я подържа и дали ако я подържа същия код няма да ми гърми с лимит време, и доколкото знам unsafe се ползва за pointers.

А имаики предвид че C++ се води unsafe language явно Judge-a го подържа или ти имаш предвид дали може да се пише unsafe код на C#? 

Не съм напреднал и определено не съм аз човека който може да ти отговори, просто питам за обща култура :)

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Да, точно за C# имам предвид и точно заради указателите, тъй като те гарантират до някаква степен бързодействие :)

0
quickben avatar quickben 966 Точки

Аха доколкото разбирам искаш да кажеш, че примерно ако знам как да достъпя елементите на един масив с pointers тази програма на C# няма да ми гърми? Или горовиш принципно а не за конкректния тип задачи :)

0
quickben avatar quickben 966 Точки

хахах mihayloff14 и от c++ ли разбираш :)

0
mihayloff14 avatar mihayloff14 824 Точки

Не, просто се разрових един ден и намерих тези материали. Когато имам време ще ги разгледам и аз. cool

0
quickben avatar quickben 966 Точки

Ясно. Не, че аз разбирам от c++, просто първо с него се захванах няколко месеца преди да разбера за софтуни.

Когато решиш да се хванеш на "хорото" ти препоръчвам следната книга  "programming principles and practice using c++" от създателя на езика, книгата е страхотна, доста на пръв поглед сложни концепции са обяснени доста разбираемо, също и "буквара" къде съм го "постнал" по-горе е много добра книга. Интересен факт е, че първо благоди(автора на книгата) на Damian Dechev който е Българин ;)

Успех утре на изпита на теб и на всички колеги.

1
boyanov avatar boyanov 65 Точки

Това звучи по-трудно отколкото да си оптимизирам C# програмата. Все пак е интересно че C++ е 3-4 пъти по-бърз.

2
quickben avatar quickben 966 Точки

въпроса е ако не ти идва идея как да си оправиш програмата или примерно си на изпит и ти остават 30 минути до края и нямаш време тепърва да мислиш нов начин да решиш задачата :)

иначе определено си прав, че би трябвало да можем да се вписваме в лимитите :)

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