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
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;
}
0
Dlaczego uważacie, że chodzi o permutacje?
- autor napisał
wygeneruje wszystkie możliwe ciągi o podanej długości
- 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);