Module: (C++) Yineleme


Problem

11/12

1 numaralı satırlar ü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ı böyle görünecek.
#include<iostream> ad alanı std kullanarak; geçersiz TumbaWords( dize A, dize &w, int N ) // w - değiştirilebilir parametre (dize sonucu) // TumbaWords prosedürü alfabeyi bir karakter dizisi olarak iletir, // sözcük sözcüğü ve önceden ayarlanmış karakter sayısı (önceki – 0). { int ben; eğer (N == w.size()) {   // tüm karakterler zaten kelimeye ayarlanmışsa,     // o zaman bir dizi çıktısı almak ve prosedürü sonlandırmak gerekir cout
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