BKT2
BKT2
BKT(1);
}
Conditii combinari:
1. 1<=xk<=n-m+k, k=1,m
2. k>1, xk>xk-1 VALID
3. k=m SOL
BKT
GENERAREA COMBINRILOR
GENERAREA PERMUTRILOR
#include<iostream.h>
int x[100],n;
int valid(int k)
{
int i;
for(i=1;i<=k-1;i++)
if(x[k]==x[i])return 0;
return 1;
}
int sol(int k)
{
return(k==n);
}
void afis()
{
int i;
for(i=1;i<=n;i++)cout<<x[i]<<" ";
cout<<"\n";
}
void BKT(int k)
{
int i;
for(i=1;i<=n;i++)
{
x[k]=i;
if(valid(k))if(sol(k))afis();
else BKT(k+1);
}
}
int main()
{
cin>>n;
BKT(1);
return 0;
}
#include<iostream.h>
int x[100],n,m;
int valid(int k)
{
if(k>1&&x[k]<=x[k-1])return 0;
return 1;
}
int sol(int k)
{
return (k==m);
}
void afis()
{
int i;
cout<<"{";
for(i=1;i<=m-1;i+
+)cout<<x[i]<<",";
cout<<x[m]<<"}\n";
}
void BKT(int k)
{
int i;
for(i=1;i<=n-m+k;i++)
{
x[k]=i;
if(valid(k))if(sol(k))afis();
else
BKT(k+1);
}
}
int main()
{
cin>>n>>m;
BKT(1);
return 0;
}