Cod sursa(job #457004)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 17 mai 2010 20:01:36
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream.h>
 int n,v[20],i,ap[20],sol=0;
    ifstream f("submultimi.in");
	ofstream g("submultimi.out");
    int afis(int k){
		int i;
		for(i=1;i<k;++i) g<<v[i]<<' ';//afisezi vectorul pana la k
		if(v[1]) g<<'\n';//daca ai afisat ceva lasi '\n'
		++sol;//asta e ca sa vezi cate solutii ai,mai gasesti si din astea doar ca deobicei ii combinatorica
	}
    int back(int k){
		int i;
		afis(k);//afisezi
		//nu ai bun pt ca nu ai ce conditii sa pui decat daca nu apare de mai multe ori :)
			for(i=v[k-1]+1/*  uite aici o smecherie ca e crescator ;)   */;i<=n;++i){
				v[k]=i;//in vectorul v[] tu pui solutia ca s-o afisezi
				++ap[i];//aici maresti cu 1 pe poz i pentru ca ai mai pus un i
				if(ap[i]<2)//daca apare o singura data i-ul
					back(k+1);//se duce la randul 12
				--ap[i];//daca apare de mai multe ori,scazi din ap[] si treci la urm pozitie, i+1,si iarasi pui in v[k] pe i
				//reia programul de la randul 15 la randul 21
			}
	}
	int main(){
		f>>n;
		v[0]=0;
		back(1);
		g.close();
		return 0;
	}