c++ wszystkie ciągi o podanej dł.

0

Witam.
Muszę napisać funkcję, która wygeneruje wszystkie możliwe ciągi o podanej długości, o wartościach int { 1, 2, 3, 4 } i zapisuje je do tablicy dwuwymiarowej. Na googlach nic nie znalazłem. Może ktoś pomóc?

0

Jak bym siedzial na innym kompie to wrzucilbym Ci kod do tego no ale musisz sie wysilic i wpisac w goole "permutacje c++" i wejsc na strone 9, poza tym na tym forum tez jest odpowiedz na Twoje pytanie.

0
#include <string>
#include <iostream>

using namespace std;

void string_permutation( std::string& orig, std::string& perm )
{
    if( orig.empty() )
    {
        std::cout<<perm<<std::endl;
        return;
    }

    for(int i=0;i<orig.size();++i)
    {
        std::string orig2 = orig;

        orig2.erase(i,1);

        std::string perm2 = perm;

        perm2 += orig.at(i);

        string_permutation(orig2,perm2);
    } 
}

int main()
{
    std::string orig="1234"; // liczby/litery
    std::string perm;  

    string_permutation(orig,perm);

    cout<<"Complete!"<<endl;

    system("pause");

    return 0;
}

Źródło:
http://www.codeproject.com/kb/cpp/cppperm1.aspx

0

Dlaczego uważacie, że chodzi o permutacje?

  1. autor napisał

wygeneruje wszystkie możliwe ciągi o podanej długości

  1. autor nie napisał, że podana długość generowanych ciągów jest równa liczebności wejściowego zbioru
    Zatem, imho, dla danych: zbiór={1,2,3}, długość=2, powinna powstać taka tablica:
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1
    3 2
    3 3
    Najlepiej, żeby autor wyjaśnił dokładnie co chce uzyskać.
0

Właśnie, chodziło o to, żeby z 4 możliwych wartości stworzyć wszystkie możliwe ciągi o podanej przez użytkownika (jako argument funkcji) długości. Gdzieś mi się obiło, że trzeba użyć systemu czwórkowego, ale nie za bardzo łapię o co chodzi.

(sorry, że po paru dniach odpowiadam, nie było opcji wcześniej)

0
/*
n |   4^n
-----------
1 |       4
2 |      16
3 |      64
4 |     256
5 |    1024
6 |    4096
7 |   16384
8 |   65536
9 |  262144
10| 1048576
np. dla 7 potrzebna jest*/ tablica[16384][7]
 
	for (i=0; i<ile; i++)
		t[0][i]=1;
	j=1;
	do{
		i=1;
		while (i<ile) {
			t[j+1][i]=1+t[j][i];
			if (t[j+1][i]>4)
				t[j+1][i]=1;
			else 
				break;
			i++;
		}
		j++;
	} while (i<ile);

1 użytkowników online, w tym zalogowanych: 0, gości: 1