مقالات

خارطة الطريق للبدء في البرمجة التنافسية للمبتدئين

كيف تبدأ البرمجة التنافسية ؟

  • هل أنت مبتدئ في البرمجة التنافسية ؟
  • هل تشعر دائما برغبة في البدء بالبرمجة التنافسية و لكنك خائف جدا ؟
  • هل وجدت المسائل صعبة للغاية لتبدأ بها ؟

في خارطة الطريق هذه ، سنتحدث عن موضوع رئيسي – كيف تبدأ البرمجة التنافسية ؟

بالنسبة لأولئك الذين لا يعرفون ما هي البرمجة التنافسية (CP) ، فهي رياضة ذهنية تتنافس بها الأفراد من جميع أنحاء العالم.

ملاحظة: إن الجمهور المستهدف لخارطة الطريق هم مبتدئين تماما يجدون من الصعب جدا البدء بالبرمجة التنافسية في المقام الأول.

كيف ستفيدك البرمجة التنافسية في حياتك المهنية؟

  1. يمكنك استخدام تقييماتك بشكل جيد جدا (التي تم تحقيقها على مختلف منصات البرمجة التنافسية) في سيرتك الذاتية لتوضيح مدى تفوقك بين زملائك! (صدق أو لا تصدق ، إن شركات التوظيف تشعر بالإعجاب من خلال رؤية أدائك على منصات الإنترنت).
  2. سوف تتعلم كيفية التعامل مع المشكلة بأفضل الطرق الممكنة ، وستتعلم كيفية التفكير في المشكلة وحلها بشكل تحليلي وتحليلها وتعقيد المكان والزمان.
  3. تفضل كل شركة كبيرة أو شركة قائمة على المنتج إجراء جولة تصفية أولية تتكون من مشاكل البرمجة التنافسية.
  4. سوف تتعلم لغة برمجة من البداية إلى النهاية.
  5. اندفاع الأدرينالين الذي ستحصل عليه بعد رؤية العلامة الخضراء واسمك على لوحة الصدارة – لا يوجد شيء مقارن بذلك.

ارجع إلى هذا المستند لمعرفة كل ما هو موجود في العالم لتتعلمه أو تتبعه وكيف ستساعدك. لا تبدأ في حفظ محتوياته بل بالأحرى فهمها.

لا نريدك أن تستخدم عقلك كقرص صلب ولكن كمعالج.

الخطوة الأولى : تعلم لغة برمجة معروفة:

يمكنك القيام ببرمجة تنافسية بأي لغة برمجة ، ولكن يوصى بشدة أن تختار لغة C++ / C أو Java. والسبب هو أن وقت التنفيذ هو عامل أساسي في البرمجة التنافسية ، وبالتالي ، فإن اختيار لغة يكون وقت تنفيذها سريعا سيعطيك بالتأكيد فائدة. تعد C++ / C و Java أسرع نسبيا ، خاصة عند مقارنتها بلغات مثل Python.

من الأفضل استخدام ++C لأنه من بين الأسرع من حيث وقت التنفيذ ويوفر الكثير من الوظائف المضمنة ، ويتم استخدامه على نطاق واسع ولديه دعم لهياكل البيانات المختلفة من خلال STL (مكتبة النماذج القياسية) ، ومع ذلك ، فإن Java أيضا جيدة الاختيار لأنه يدعم BigInteger (القدرة على تخزين أعداد كبيرة دون مشاكل الفائض).

الخطوة الثانية: البدء بالبرمجة التنافسية :

قبل الانتقال إلى عالم المسابقات ، سيكون من الأفضل التعرف على أسلوب الإدخال / الإخراج وطريقة إجراء الترميز على المنصات عبر الإنترنت ، لذلك نقترح عليك:

  1. ابدأ التدرب على Hackerrank ، ولديه IDE رائع وبرنامج رائع للمبتدئين سيساعدك في البدء. يحتوي Hackerrank على مجموعة كبيرة من المشكلات التي تزداد صعوبتها تدريجيا ، وبالتالي لن تواجه ارتفاعا أو انخفاضا مفاجئا في الصعوبة ، كما يتيح لك عرض حالة الاختبار التي فشلت فيها التعليمات البرمجية ، مما سيساعدك كثيرا في إنشاء حالات الاختبار وكذلك تعلم كيفية تصحيح الرمز للحالة التي فشلت فيها. كمبتدئ ، من المهم أن تتمكن من رؤية حالة الاختبار التي فشلت حتى تتمكن من معرفة كيفية استهداف مثل هذه الحالات.
  2. بمجرد أن تكون على دراية بـ Hackerrank ، سيكون من الجيد الغوص أكثر قليلا في مشاكل أصعب قليلا والتي يمكنك الذهاب إليها لـ SPOJ. SPOJ ليس موقع برمجة تنافسي ولكنه يتألف من الكثير من الأسئلة المتنوعة التي ستساعدك في تعلم تنفيذ الكثير من هياكل وخوارزميات البيانات الجديدة. إذا كنت ستحل أول 20 مشكلة في SPOJ ، فستغطي موضوعات مثل المصفوفات والسلاسل والفرز والبحث. إذا كنت ستحل أول 50 مشكلة ، فستغطي مواضيع مثل التلاعب بالبت والعودة والتراجع والرسم البياني. إذا كنت ستحل أول 100 مشكلة ، فستكون قد غطت مواضيع متقدمة مثل البرمجة الديناميكية والأكوام والتجزئة والمحاولات والأشجار المجزأة.

كما هو مذكور أعلاه ، حاول أن تبدأ بـ Hackerrank وحل أول 20 مشكلة على الأقل للحصول على فكرة عن كيفية عمل البرمجة التنافسية.

بعد الانتهاء من أول 20 مشكلة لـ Hackerrank ، يجب عليك الانتقال إلى SPOJ ومحاولة حل بعض المشكلات هنا أيضا.

كملاحظة جانبية ، نود أن نقترح أنه أثناء حل هذه المشاكل ، يجب ألا تنتظر حقا إكمالها أولا. بدلا من ذلك ، في نفس الوقت ، يجب أن تبدأ المشاركة على الفور بمجرد أن تحصل على فكرة حول كيفية عمل I / O لأن المشاركة في المسابقات والتنافس مع الآخرين هي أفضل جزء من البرمجة التنافسية.

ملاحظة: بالنسبة لأولئك منكم الذين لديهم فكرة صغيرة عن بنية البيانات والخوارزميات ، قد ترغب في ممارسة فقط تلك الأجزاء من الخطوة 3 و 4 أدناه ، والتي لا تعرفها.

الخطوة الثالثة: تعرف على هياكل البيانات :

مرة أخرى ، يرجى أن تضع في اعتبارك أن دافعنا ليس جعلك تتذكر هياكل البيانات أو الخوارزميات في الخطوة التالية ولكن لتظهر لك كيف يمكنك تنفيذ هذه في مشاكل الحياة الحقيقية.

لقد أضفنا أيضا بعض الأسئلة مع كل موضوع حتى تتمكن من الحصول على خبرة عملية حول كيفية تطبيق بنية البيانات في أي مشكلة.

المصفوفات والمتجهات: تسمى مجموعة من أنواع البيانات المتشابهة Array. تشبه المتجهات أيضا المصفوفات ، ولكن عند دمجها مع وظائف STL ، فإنها تثبت أنها أكثر فائدة من مجموعة في البرمجة التنافسية. فيما يلي بعض الموارد الرائعة لفهم أساسيات المصفوفات والناقلات فيC++. إذا كنت تمضي قدما في استخدام Java كلغة برمجة ، فيمكنك إجراء بحث سريع في Google للعثور على موارد Java المكافئة أيضا.

دروس في المصفوفات و المتجهات :

  1. GeeksforGeeks Array Data Structure
  2. GeeksforGeeks Vector in CPP

مسائل في المصفوفات و المتجهات :

  1. Hackerrank – simple array sum problem
  2. Hackerrank – Circular array rotation
  3. https://www.hackerrank.com/challenges/equality-in-a-array/problem
  4. https://www.interviewbit.com/problems/wave-array/
  5. https://www.interviewbit.com/problems/max-sum-contiguous-subarray/

الرياضيات الأساسية: مشاكل الرياضيات الأساسية والتنفيذ شائعة إلى حد ما في المسابقات وكذلك في المقابلات. لذلك ، من المستحسن أن يكون لديك فكرة عن مفاهيم الرياضيات الأساسية.

دروس في البرمجة الرياضية :

  1. https://www.geeksforgeeks.org/c-program-find-gcd-hcf-two-numbers/
  2. https://www.geeksforgeeks.org/sieve-of-eratosthenes/
  3. https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/

مسائل في البرمجة الرياضية :

  1. https://www.spoj.com/problems/ADDREV/
  2. https://www.spoj.com/problems/FCTRL2/
  3. https://www.spoj.com/problems/FENCE1/
  4. https://www.spoj.com/problems/PALIN/
  5. https://www.spoj.com/problems/DIVFACT/
  6. https://www.spoj.com/problems/AMR11E/
  7. https://www.spoj.com/problems/TDPRIMES/
  8. https://www.spoj.com/problems/TDKPRIME/

السلاسل: هي مجموعات من بيانات متعددة ويمكن الإشارة إليها كمجموعة من الأحرف. مشاكل السلسلة شائعة جدا في مسابقات البرمجة المختلفة وفي الواقع تعد مشكلات السلسلة من بين المشاكل المفضلة للمقابلات التقنية.

دروس في السلاسل :

  1. https://www.tutorialspoint.com/cplusplus/cpp_strings.htm
  2. https://www.hackerearth.com/practice/algorithms/string-algorithm/basics-of-string-manipulation/tutorial/

مسائل في السلاسل :

  1. https://www.interviewbit.com/problems/palindrome-string/
  2. https://www.hackerrank.com/challenges/two-characters/problem
  3. https://www.hackerrank.com/challenges/gem-stones/problem
  4. https://www.hackerrank.com/challenges/the-love-letter-mystery/problem
  5. https://www.hackerrank.com/challenges/anagram/problem
  6. https://www.interviewbit.com/problems/minimum-characters-required-to-make-a-string-palindromic/

المكدس: المكدس هو بنية بيانات خطية تتبع ترتيب معين يتم فيه تنفيذ العمليات.

دروس في المكدسات :

  1. https://www.geeksforgeeks.org/stack-in-cpp-stl/
  2. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/tutorial/
  3. https://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm

مسائل في المكدسات :

  1. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/sniper-shooting/
  2. https://www.interviewbit.com/problems/evaluate-expression/
  3. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/monk-and-prisoner-of-azkaban/
  4. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/a-game-of-numbers-1-5d3a8cb3/
  5. https://www.interviewbit.com/problems/rain-water-trapped/
  6. https://www.spoj.com/problems/STPAR/
  7. https://www.spoj.com/problems/HISTOGRA/
  8. https://www.spoj.com/problems/MMASS/

قائمة الانتظار: قائمة الانتظار هي بنية خطية تتبع ترتيبا معينا يتم فيه تنفيذ العمليات. الترتيب هو اول من يتم إدخاله هو أول من يتم إخراجه (FIFO).

دروس في القوائم :

  1. https://www.geeksforgeeks.org/queue-cpp-stl/
  2. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/tutorial/
  3. https://www.w3schools.in/data-structures-tutorial/queue/

مسائل في القوائم :

  1. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/monk-and-chamber-of-secrets/
  2. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/chocolate-distribution-3-f9297a6e/
  3. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/little-monk-and-goblet-of-fire/
  4. https://www.spoj.com/problems/ADAQUEUE/
  5. https://www.spoj.com/problems/LAZYPROG/

الخريطة: تعد الخريطة واحدة من أكثر هياكل البيانات فائدة. يمكن استخدامه للعثور على الأرقام وتكرارها وإضافتها وحذفها ، وهو أيضا أحد أكثر هياكل البيانات استخداما.

دروس في الخرائط :

  1. https://www.geeksforgeeks.org/map-associative-containers-the-c-standard-template-library-stl/
  2. https://www.tutorialspoint.com/cpp_standard_library/map.htm
  3. https://www.studytonight.com/cpp/stl/stl-container-map

مسائل في الخرائط :

  1. https://www.hackerrank.com/challenges/cpp-maps/problem
  2. https://www.spoj.com/problems/ADACLEAN/
  3. https://www.interviewbit.com/problems/colorful-number/
  4. https://www.interviewbit.com/problems/anagrams/
  5. https://www.interviewbit.com/problems/substring-concatenation/

الخطوة الرابعة: التعرف على الخوارزميات :

الخوارزميات هي المنطق الذي يتم تنفيذه على هياكل البيانات المختلفة لتحقيق الناتج المطلوب.

تعقيد الوقت / المكان: كل خوارزمية لها تعقيد الزمان والمكان الذي يشير إلى الحد الأقصى من الوقت الذي ستستغرقه الخوارزمية والحد الأقصى من الذاكرة التي تتطلبها الخوارزمية. أثناء القيام بالبرمجة التنافسية ، سيلعب هذان الإثنانان دورا رئيسيا في تحديد حكم الحل الخاص بك.

حاول دائما التفكير في الحل الأمثل ، وهو الحل الذي يعمل بأقل تعقيد زمني ويحتل الحد الأدنى من المساحة.

الترتيب: يجب أن تكون قد سمعت عن عدد من تقنيات الترتيب ولكن أثناء القيام بالبرمجة التنافسية تثبت معظم هذه التقنيات أنها تستغرق وقتا طويلاً لذلك كان الحل الأمثل باستخدام تابع sort() الذي يقوم بالترتيب خلال زمن يعتبر الأمثل.

أنواع الخوارزميات :

الجشع: الحل الذي نتحرك فيه خطوة بخطوة نحو هدفنا النهائي إذ يشار إليه باسم خوارزمية الجشع.

دروس :

  1. https://www.hackerearth.com/practice/algorithms/greedy/basics-of-greedy-algorithms/tutorial/
  2. https://www.topcoder.com/community/competitive-programming/tutorials/greedy-is-good/

مسائل :

  1. https://www.hackerrank.com/challenges/minimum-absolute-difference-in-an-array/problem
  2. https://www.hackerrank.com/challenges/marcs-cakewalk/problem
  3. https://www.spoj.com/problems/BUSYMAN/
  4. https://www.spoj.com/problems/GERGOVIA/
  5. https://www.spoj.com/problems/BAISED/
  6. https://www.spoj.com/problems/BALIFE/
  7. https://www.hackerrank.com/challenges/grid-challenge/problem
  8. https://www.hackerrank.com/challenges/maximum-perimeter-triangle/problem
  9. https://www.hackerrank.com/challenges/sherlock-and-the-beast/problem

Divide and Conquer: كما يوحي الاسم ، نحاول في هذا أن نجعل المشكلة أسهل من خلال تقسيمها إلى عدد من المشاكل الفرعية ثم حلها واحدة تلو الأخرى ثم دمجها معا في النهاية لإعطاء إجابة نهائية.

دروس :

  1. https://www.hackerearth.com/practice/algorithms/searching/binary-search/tutorial
  2. https://www.hackerearth.com/practice/notes/power-of-binary-search/
  3. https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/

مسائل :

  1. https://www.spoj.com/problems/INVCNT/
  2. https://www.codechef.com/problems/MRGSRT
  3. https://www.spoj.com/problems/ABCDEF/
  4. https://www.spoj.com/problems/AGGRCOW/
  5. https://www.spoj.com/problems/PIE/
  6. https://www.codechef.com/problems/STRSUB
  7. https://www.spoj.com/problems/MKUHAR/
  8. https://www.spoj.com/problems/SUBS/

العودية والتراجع: العودية هي نوع الخوارزمية التي تستدعي فيها الوظيفة نفسها مرارا وتكرارا لتحقيق الناتج النهائي. يستخدم بنية بيانات المكدس. التراجع هو نموذج خوارزمي يحاول حلولا مختلفة حتى يجد حلا “يعمل”. يستخدم العودية.

دروس :

  1. https://www.geeksforgeeks.org/recursion/
  2. https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-recursion-part-1/
  3. https://www.geeksforgeeks.org/backtracking-algorithms/

مسائل :

  1. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/simran-and-stairs/
  2. https://www.interviewbit.com/problems/subset/
  3. https://www.interviewbit.com/problems/kth-permutation-sequence/
  4. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/n-queensrecursion-tutorial/
  5. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/a-tryst-with-chess/
  6. https://www.interviewbit.com/problems/sudoku/

البرمجة الديناميكية: في DP نقوم بتقسيم المشكلة إلى عدد من المشاكل ثم نتغلب عليها واحدة تلو الأخرى ونخزن نتيجة المشكلة الفرعية السابقة لحساب ناتج المشكلة التالية.

دروس :

  1. https://qr.ae/TUnXQo
  2. https://nitkcccc.wordpress.com/2014/02/27/dynamic-programming-tutorial-level-1-easy-medium-part-12/
  3. https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/

مسائل :

  1. https://www.spoj.com/problems/COINS/
  2. https://www.spoj.com/problems/EDIST/
  3. https://www.codechef.com/problems/DELISH
  4. https://www.codechef.com/problems/GRID
  5. https://www.codechef.com/problems/MATRIX2
  6. https://www.codechef.com/problems/DBOY/
  7. https://www.codechef.com/JUNE13/problems/LEMOUSE

نظرية الرسم البياني:

دروس :

  1. https://www.hackerearth.com/practice/notes/graph-theory-part-i/
  2. https://www.geeksforgeeks.org/fundamentals-of-algorithms/#GraphAlgorithms
  3. https://www.topcoder.com/community/competitive-programming/tutorials/introduction-to-graphs-and-their-data-structures-section-2/

مسائل :

  1. https://www.spoj.com/problems/PPATH/ (Breadth-first Search)
  2. https://www.spoj.com/problems/ONEZERO/ (Breadth-first Search)
  3. https://www.spoj.com/problems/PT07Z/ (Depth-first Search)
  4. https://www.spoj.com/problems/BUGLIFE/ (Depth-first Search)
  5. https://www.spoj.com/problems/SHPATH/ (Shortest path)
  6. https://www.spoj.com/problems/TRAFFICN/ (Shortest path)
  7. https://www.spoj.com/problems/SAMER08A/ (Shortest path)
  8. https://www.codechef.com/problems/DIGJUMP (Shortest path)
  9. https://www.codechef.com/AMR14ROS/problems/AMR14B (Shortest path)
  10. https://www.codechef.com/problems/SPSHORT (Shortest path)

للمزيد من الخوارزميات يمكنك زيارة :  https://www.geeksforgeeks.org/lmns-algorithms-gq/

الخطوة الخامسة: البدء بالمسابقات الفعلية على الانترنت :

بمجرد أن تكون على دراية بتعقيدات الوقت ، فإن عمليات I / O الخاصة بـ IDE عبر الإنترنت والمسائل التي يمكنك البدء بها مع المسابقات الفعلية ، والتي توفر فيها المواقع التالية أفضل بيئة للتنافس مع الآخرين:

1- Codechef : يقدم Codechef ثلاث مسابقات شهرية يمكنك من خلالها المشاركة واختبار مهاراتك:

  • Codechef Long: هذه مسابقة لمدة 10 أيام وهي واحدة من أفضل المسابقات لبدء البرمجة التنافسية لأنها لا تحتوي على أي عقوبة إجابة خاطئة وتمنحك الكثير من الوقت للتفكير في الحل الخاص بك وتطبيقه لمشكلة معينة.
  • Cook-Off: هذه مسابقة أقصر بكثير تستمر لمدة 2.5 ساعة وتتميز بـ 5 مشاكل متفاوتة الصعوبة ، ستعلمك هذه المسابقة كيفية التفكير في حل وتطبيقه خلال فترة زمنية معينة.
  • Lunchtime: هذه مسابقة مدتها 3 ساعات مخصصة لطلاب المدارس. عادة ما تحتوي على 4 مشاكل. إذا كنت تعتقد أن المشاكل في هذه المشكلة ستكون سهلة ، فأنت في مفاجأة كبيرة.

2- Codeforces : يفصل Codeforces المستخدمين إلى ثلاث فئات: Div 1 ، Div 2 ، Div 3.

ابدأ بحل مشاكل Div 3 في البداية. تقدم Codeforces مسابقات متعددة في الشهر ويمكنك حتى محاولة بدء مسابقة افتراضية إذا أردت. لا تحبط نفسك إذا وجدت صعوبة في حل أكثر من 2،3 مشكلة أو حتى مشكلة واحدة أثناء المسابقة عندما تنتهي المسابقة ، اطلع على البرامج التعليمية للمشكلة التي لم تتمكن من حلها ثم حلها.

يعتبر Codeforces جيدا أيضا للمبتدئين لأنه يساعدك أيضا في النظر في حالات الاختبار التي فشل حلها والتي تساعدك بدورها في تصحيح الأخطاء بالإضافة إلى تعلم إنشاء حالات الاختبار الخاصة بك لمزيد من المشاكل المستقبلية.

يعد الحل هو الجانب الرئيسي لتحسين نفسك ، انظر أيضا إلى أكواد المبرمجين الآخرين لأنه سيساعدك في تحسين نمط التكويد الخاص بك.

بصفتك مبتدئا ، يجب ألا تهتم أبدا بالتصنيف لأن هذا هو أكبر عائق لك في محاولة أصعب وتجربة المشاكل خارج منطقة راحتك أثناء المنافسة. حتى إذا كان تقييمك ينخفض ، فهذا لا يعني أنك لا تتحسن ؛ يعتبر التقييم نسبيا للآخرين وهو ليس معيارا لما يمكنك القيام به.

قم بحل أكبر عدد ممكن ، ولكن لا تشعر بالإحباط إذا لم تتمكن من حل مشكلة بعد انتهاء المسابقة ، وشاهد البرنامج التعليمي واقرأ أيضا أكواد المشاركين الآخرين لتعلم نمط التكويد ونمط الآخرين.

إقرأ أيضا : تطبيق ” وين Way-In ” من تكامل ما هو و كيف تقوم بالتسجيل فيه

الخطوة السادسة: تدرب ثم تدرب ثم تدرب :

يقول الناس أن الممارسة تجعل الرجل مثاليا ولكن في عالم البرمجة التنافسية ، لم يحقق أحد هذه العلامة على الإطلاق حتى الآن بغض النظر عن مقدار ممارستك ، فستفقد شيئا دائما ولكن هذا هو الجزء الرائع من البرمجة التنافسية التي لم تنجزها أبدا.

لا تفقد الأمل واستمر في المحاولة والتقديم حتى تحصل على هذا القبول الأخضر ، لأن ثق بي عندما أقول أن رؤية هذا القبول الأخضر هو أحد أفضل المشاعر في هذا العالم.

اقرأ أيضا عن بطولات العالم التي تنظمها العديد من المنظمات المرموقة مثل ACM و Google و Facebook و Vk cup و SnackDown وإحدى أفضل الطرق للحصول على مقابلة عمل مع شركات مثل هذه هي البرمجة التنافسية وأداء جيد في المسابقات التي تنظمها معهم. لكن أولا وقبل كل شيء ، استيقظ من تلك الأريكة وابدأ في الاستمتاع بالرياضة.

قد تبدو خريطة الطريق المذكورة أعلاه صعبة للغاية بالنسبة لك. ومع ذلك ، فمن المفترض أن يتم اتباعها على مدى فترة 3-6 أشهر ، اعتمادا على سرعتك. نود أن نقترح أنه بدلا من اتباع خارطة الطريق ، يجب عليك محاولة تطوير العادات التي تساعدك على تحسين مهاراتك في البرمجة التنافسية. على سبيل المثال ، يمكن أن تكون عادة بسيطة – “سأحل 3 مشاكل من SPOJ كل يوم”. إذا اتبعت هذه العادة في شهر واحد فقط ، فستكون قد قمت بحل 90 مشكلة في SPOJ وهو بالتأكيد إنجاز رائع!

الوسوم

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى
إغلاق
إغلاق