Pagini recente » Monitorul de evaluare | Cod sursa (job #132672) | Cod sursa (job #2583044) | Cod sursa (job #2214978) | Cod sursa (job #3350707)
// https://infoarena.ro/problema/submultimi
#include<fstream>
using namespace std;
ifstream fin("submultimi.in");
ofstream fout("submultimi.out");
int n;
// ales[i] = 0 daca NU includ pe i in solutie (submultime)
// ales[i] = 1 daca includ pe i in solutie
// fiind declarat global, initial este initializat cu 0
int ales[17];
void BT(int pos, int nrAles) {
// pos - pozitia la care ne aflam in vectorul ales
if(pos > n) {
// am ajuns la capatul vectorului `ales`, asa ca acum afisez solutia
if(!nrAles) {
return;
}
for(int i = 1; i <= n; i++) {
if(ales[i]) {
fout << i << " ";
}
}
fout << endl;
return;
}
// dau pe rand lui ales[pos] valorile 0, respectiv 1
ales[pos] = 0;
BT(pos+1, nrAles);
ales[pos] = 1;
BT(pos+1, nrAles+1);
}
int main() {
fin >> n;
BT(1, 0);
fin.close();
fout.close();
return 0;
}