Pagini recente » Cod sursa (job #82378) | Cod sursa (job #27865) | Cod sursa (job #554840) | Cod sursa (job #729643) | Cod sursa (job #3350708)
// 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) {
// pos - pozitia la care ne aflam in vectorul ales
// nrAles - contorizeaza numarul de elemente alese pentru a crea submultimea curenta
if(pos > n) {
// am ajuns la capatul vectorului `ales`, asa ca acum afisez solutia
int nrAles = 0;
for(int i = 1; i <= n; i++) {
if(ales[i]) {
fout << i << " ";
nrAles++;
}
}
if(nrAles) {
fout << endl;
}
return;
}
// dau pe rand lui ales[pos] valorile 0, respectiv 1
ales[pos] = 1;
BT(pos+1);
ales[pos] = 0;
BT(pos+1);
}
int main() {
fin >> n;
BT(1);
fin.close();
fout.close();
return 0;
}