Pagini recente » Cod sursa (job #592774) | Cod sursa (job #942295) | Cod sursa (job #2621675) | Cod sursa (job #687147) | Cod sursa (job #457004)
Cod sursa(job #457004)
#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;
}