Răspuns:
#include<fstream>
using namespace std;
ifstream f("paranteze.in");
ofstream g("paranteze.out");
int x[25],n;
void afisare()
{ int i;
for(i=1;i<=n;i++)
if(x[i]==1)
g<<'(';else g<<')';
g<<endl;
}
int verif(int k)
{ int i,pi=0,pd=0;
for(i=1;i<=k;i++)
if(x[i]==1) pd++;
else pi++;
if(pi>pd|| pd>n/2)
return 0;
return 1;
}
void BackRec(int k)
{
int i;
for(i=1;i<=2;i++)
{
x[k]=i;
if(verif(k))
if(k==n)
afisare();
else BackRec(k+1);
}
}
int main()
{
f>>n;
BackRec(1);
g.close();
return 0;
}
Explicație: