infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: alexandru din Februarie 03, 2009, 20:17:03



Titlul: Partitile unei multimi
Scris de: alexandru din Februarie 03, 2009, 20:17:03
Pentru partitia  unei multimi am facut programul uramtor ,dar nu merege si n-am habar unde am gresit, mai precis unde se blocheaza, ma poate ajuta cineva ?
Cod:
#include<fstream.h>
int n;
int nc;
int P[30];
int NrP;
ofstream fout("part.out");
void out()
   {
    fout<<"partia "<<++NrP<<endl;
    for(int j=1;j<=nc;j++)
       {fout<<"{";
for(int i=1;i<=n;i++)
   if(P[i]==j) cout<<i<<" ";
fout<<"} ";
       }
   fout<<endl;
   }
void GenPart(int k)
   {
   if(k-1==n) out();
        else for(int j=1;j<=nc;j++)
             { P[k]=j;
               GenPart(k+1);
            }
     nc++;
     P[k]=nc;
     GenPart(k+1);
     nc--;
   }
void main()
   {cout<<"n="; cin>>n;
   GenPart(1);
    fout.close();
    }


Titlul: Răspuns: Partitile unei multimi
Scris de: Florian Marcu din Februarie 03, 2009, 21:02:14
Tu iti creezi clasa noua, indiferent daca (k-1 == n), deci iti va genera clase la infinit, pt ca nu ai conditie de oprire pt asta. Pune constructia unei clase noi pe ramura else a if(k-1==n). Succes!


Titlul: Răspuns: Partitile unei multimi
Scris de: alexandru din Februarie 04, 2009, 09:50:43
Thanks  , asta a fost,  :)