Ako nekog ne mrzi je l moze da napise neki hint?
Unapred hvala.
Unapred hvala.
void Rek( int p, bool mark[n] )
{
if ( p == n ) {
//uradi nesto, u podnizu su svi kojima je mark[i] = true
}
else {
mark[p] = true;
Rek( p+1, mark );
mark[p] = false;
Rek( p+1, mark );
}
}
for (int i = 0; i < ( 1 << n ); i++) {
// ( 1 << n ) = 2^n !!!
//uradi nesto, a u podnizu su svi gde je: i & (2^j) == (2^j), gde je j, for (int j = 0; j < n; j++) !!!
//znaci onda ide:
for (int j = 0; j < n; j++)
if ( i & (1<<j) == (1<<j) ) { ovaj je u podnizu }
}
// e sada mozes malo poboljsati jer ako primetis stalno racunas 2^i, gde i ide do n, pa mozes da napravis niz stepen[n+1], gde ce ga napuniti stepenima dvojke do n
// stepen[0] = 1; for (int i = 1; i <= n; i++) stepen[i] = 2*stepen[i-1];