10/07/2019, 17:44
10/07/2019, 17:59
10/07/2019, 20:44
10/07/2019, 21:12
11/07/2019, 00:10
char v[n] = {a, b, c, d, e};
unsigned int u_1[k] = {0,1,2};
unsigned int u_2[k] = {0,1,3};
unsigned int u_3[k] = {0,1,4};
unsigned int u_4[k] = {0,2,3};
unsigned int u_5[k] = {0,2,4};
unsigned int u_6[k] = {0,3,4};
unsigned int u_7[k] = {1,2,3};
unsigned int u_8[k] = {1,2,4};
unsigned int u_9[k] = {1,3,4};
unsigned int u_10[k] = {2,3,4};
{v[u_1[0]], v[u_1[1]], v[u_1[2]]} ≡ {v[0], v[1], v[2]} ≡ {a, b, c}
{v[u_2[0]], v[u_2[1]], v[u_2[2]]} ≡ {v[0], v[1], v[3]} ≡ {a, b, d}
{v[u_3[0]], v[u_3[1]], v[u_3[2]]} ≡ {v[0], v[1], v[4]} ≡ {a, b, e}
...
{v[u_8[0]], v[u_8[1]], v[u_8[2]]} ≡ {v[1], v[2], v[4]} ≡ {b, c, e}
{v[u_9[0]], v[u_9[1]], v[u_9[2]]} ≡ {v[1], v[3], v[4]} ≡ {b, d, e}
{v[u_10[0]], v[u_10[1]], v[u_10[2]]} ≡ {v[2], v[3], v[4]} ≡ {c, d, e}
bool next_combination(unsigned int n, unsigned int k, unsigned int u[k]);
11/07/2019, 13:11
bool next_combination(int n, int k, int u[k])
{
for (int i = 0; i < k; i++)
{
int max = n - k + i;
if (u[k] < max)
{
u[k]= u[k]++;
}
else
{
u[k]= u[k]--;
}
}
for (int j = 0; j < k; j++)
cout << u[j] << endl;
return;
}
11/07/2019, 14:45
#include <iostream>
//stampare a schermo tutte le combinazioni semplici delle prime 5 lettere dell'alfabeto prese 3 alla volta.
using namespace std;
bool next_combination(unsigned int n, unsigned int k, unsigned int *u)
{
for(unsigned int i = 0; i < k; ++i)
{
if(u[k - i - 1] < n - i - 1) //il secondo termine rappresenta il massimo relativo al generico elemento
{
++u[k - i - 1];
for(unsigned int j = k - i; j < k; ++j)
{
u[j] = u[j - 1] + 1;
}
return true;
}
}
return false;
}
int main()
{
const unsigned int n = 5;
const unsigned int k = 3;
char v[n] = {'a', 'b', 'c', 'd', 'e'};
unsigned int u[k] = {0, 1, 2};
do
{
for(unsigned int i = 0; i < k; ++i)
{
cout << v[u[i]] << " ";
}
cout << endl;
}
while(next_combination(n, k, u));
}
11/07/2019, 15:44
11/07/2019, 19:34
Ok, ma in pratica invece di utilizzare i numeri, tu hai creato un array di char.
Ora per far variare k bisogna incapsulare tutto in un ciclo, in modo che stampi tutte le combinazioni con 1, 2..n-1 element, giusto?
13/07/2019, 12:37
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.