Sign in
or
Register
Courses
Textbook
Compiler
Contests
Topics
Courses
سي #. الأساسيات
الإجراءات الفرعية. العودية
Module:
الإجراءات الفرعية. العودية
Problem
11
/12
التكرار على السطور
Theory
Click to read/hide
مهمة h6>
في أبجدية لغة القبيلة "Tumba-Yumba" ؛ أربعة أحرف: "K" ، "L" ، "M" و & quot؛ N & quot ؛. تحتاج إلى عرض جميع الكلمات التي تتكون من أحرف
n
التي يمكن إنشاؤها من أحرف هذه الأبجدية. tt>
المشكلة هي مشكلة القوة الغاشمة العادية التي يمكن اختزالها إلى مشكلة أصغر.
سنقوم باستبدال الأحرف بالتسلسل.
يمكن أن يكون الموضع الأول للكلمة واحدًا من الأحرف الأربعة للأبجدية (K. L ، M ، N).
لنضع الحرف
K
أولاً. بعد ذلك ، من أجل الحصول على جميع المتغيرات التي تحتوي على الحرف الأول
K
، تحتاج إلى تعداد جميع مجموعات الأحرف الممكنة & nbsp؛ في المواضع المتبقية
n - 1
& nbsp؛ وما إلى ذلك. (انظر الصورة). div>
وهكذا ، يتم تقليل المشكلة إلى حل أربع مسائل طولها
n - 1
.
نبسب ؛
تكرار أكثر من n حرفًا بشكل متكرر h6>
w [0] = & # 39؛ K & # 39 ؛؛ // كرر خلال آخر أحرف L-1 ث [0] = & # 39 ؛ L & # 39 ؛؛ // كرر خلال آخر أحرف L-1 ث [0] = & # 39 ؛ M & # 39 ؛؛ // كرر خلال آخر أحرف L-1 ث [0] = & # 39 ؛ N & # 39 ؛؛ // كرر خلال آخر أحرف L-1
w
- سلسلة أحرف تخزن كلمة العمل.
وهكذا ، حصلنا على
العودية. & nbsp ؛
يمكننا ترتيب حل المشكلة في شكل إجراء تكراري. & nbsp ؛
يبقى لتحديد متى سينتهي العودية؟ عندما يتم تعيين جميع الأحرف ، أي أن عدد الأحرف المحددة هو
n
. في هذه الحالة ، تحتاج إلى عرض الكلمة الناتجة على الشاشة والخروج من الإجراء.
سيبدو برنامج C # هكذا. div>
//
w - معلمة قابلة للتغيير strong> (سلسلة-نتيجة) // يتم تمرير إجراء TumbaWords الأبجدية كسلسلة أحرف ، // الكلمة word وعدد الأحرف المحددة بالفعل (في البداية & ndash ؛ 0) TumbaWords باطل ثابت (سلسلة A ، سلسلة المرجع w ، int N) { إذا (N == w.Length) // w.Length - عدد الأحرف في السلسلة { نبسب ؛ // إذا تم بالفعل تعيين جميع الأحرف للكلمة ، & nbsp؛ نبسب ؛ نبسب ؛ // ثم من الضروري إخراج سلسلة وإنهاء الإجراء Console.WriteLine (ث) ؛ يعود؛ } لـ (int i = 0؛ i & lt؛ w.Length؛ i ++) // إذا كان الشرط أعلاه خاطئًا (أي أنه لا توجد مسافات بين جميع الأحرف ، { نبسب ؛ نبسب ؛ // إذا كان الشرط أعلاه خاطئًا (أي ، ليست كل الأحرف متباعدة ، & nbsp؛ نبسب ؛ // ثم في الحلقة نمر بجميع أحرف الأبجدية و نبسب ؛ // ضع الحرف بالتناوب على أول مساحة خالية w + = A [i] ؛ TumbaWords (A ، المرجع w ، N + 1) ؛ ث = ث إزالة (طول ث - 1) ؛ // ثم قم بإزالة آخر حرف مضاف ، نبسب ؛ // لعمل كلمة جديدة بنفس البادئة } } فراغ ثابت رئيسي () { int n = Convert.ToInt32 (Console.ReadLine ()) ، كلمة سلسلة = & quot؛ & quot ؛؛ TumbaWords (& quot؛ KLMN & quot ؛، المرجع word ، 0) ؛ }
لاحظ strong> أن
w
معلمة قابلة للتغيير (سلسلة نتيجة)! u>
Problem
في الأبجدية من لغة القبيلة "tumba-yumba" أربعة أحرف: "K" ، "L" ، "M" و & quot؛ N & quot ؛. تحتاج إلى عرض جميع الكلمات التي تتكون من أحرف
n
التي يمكن إنشاؤها من أحرف هذه الأبجدية. div>
(c) K.Yu. بولياكوف div>
1000
ms
256 Mb
Rules for program design and list of errors in automatic problem checking
Teacher commentary