Sign in
or
Register
Courses
Textbook
Compiler
Contests
Topics
Courses
C#. Temel bilgiler
alt programlar. özyineleme
Module:
alt programlar. özyineleme
Problem
11
/12
Çizgiler üzerinde yineleme
Theory
Click to read/hide
Görev
"Tumba-Yumba" kabilesinin dilinin alfabesinde; dört harf: "K", "L", "M" ve "N". Bu alfabenin harflerinden oluşturulabilen
n
harflerinden oluşan tüm kelimeleri göstermeniz gerekmektedir.
Sorun, daha küçük bir soruna indirgenebilen normal bir kaba kuvvet sorunudur.
Sözcüğün yerine harfleri sırayla koyacağız.
Bir kelimenin ilk konumu alfabenin 4 harfinden (K. L, M, N) biri olabilir.
Önce
K
harfini koyalım. Ardından, ilk harf
K
olan tüm değişkenleri elde etmek için, kalan
n - 1
konumlarında tüm olası harf kombinasyonlarını numaralandırmanız gerekir. (resme bakın).
Böylece problem
n - 1
uzunluğundaki dört problemi çözmeye indirgenmiştir.
n karakteri tekrarlayarak yinele
w[0]='K'; // son L-1 karakterlerini tekrarla w[0]='L'; // son L-1 karakterlerini tekrarla w[0]='M'; // son L-1 karakterlerini tekrarla w[0]='N'; // son L-1 karakterlerini tekrarla
w
- çalışan kelimeyi saklayan bir karakter dizisi.
Böylece
özyineleme elde ettik.
Problemin çözümünü özyinelemeli bir prosedür şeklinde düzenleyebiliriz.
Özyinelemenin ne zaman sona ereceğini belirlemek için kalır? Tüm karakterler ayarlandığında, yani ayarlanan karakter sayısı
n
olur. Bu durumda, ortaya çıkan kelimeyi ekranda görüntülemeniz ve prosedürden çıkmanız gerekir.
C# programı şöyle görünecek.
//
w - değiştirilebilir parametre
(dize sonucu) // TumbaWords prosedürü alfabeyi bir karakter dizisi olarak iletir, // kelime kelime ve önceden ayarlanmış karakter sayısı (başlangıçta – 0) statik boşluk TumbaWords( string A, ref string w, int N ) { if (N == w.Length) // w.Length - dizideki karakter sayısı { // tüm karakterler zaten kelimeye ayarlanmışsa, // o zaman bir dizi çıktısı almak ve prosedürü sonlandırmak gerekir Console.WriteLine(w); geri dönmek; } for ( int i = 0; i
NOT
w
değişken bir parametredir (sonuç dizesi)!
Problem
Kabile dilinin alfabesinde «tumba-yumba» dört harf: "K", "L", "M" ve "N". Bu alfabenin harflerinden oluşturulabilen
n
harflerinden oluşan tüm kelimeleri göstermeniz gerekmektedir.
(c) K.Yu. Polyakov
1000
ms
256 Mb
Rules for program design and list of errors in automatic problem checking
Teacher commentary