METODA 1
#include <iostream>
using namespace std;
int n,x[100];
void afisare (int x[ ],int n)
{
cout<<"{";
for (int i=1;i<=n;i++)
if (i==n)
cout<<x[i];
else
cout<<x[i]<<" ";
cout<<"}";
cout<<endl;
}
int verif (int k)
{
if (k>1 && x[k]<=x[k-1])
return 0;
return 1;
}
void backt (int k)
{
for (int i=1;i<=n;i++)
{
x[k]=i;
if (verif (k))
{
afisare (x,k);
backt (k+1);
}
}
}
int main()
{
cin>>n;
backt (1);
return 0;
}
#include <iostream>
using namespace std;
int n,x[100];
void afisare (int x[ ],int n)
{
cout<<"{";
for (int i=1;i<=n;i++)
if (i==n)
cout<<x[i];
else
cout<<x[i]<<" ";
cout<<"}";
cout<<endl;
}
int verif (int k)
{
if (k>1 && x[k]<=x[k-1])
return 0;
return 1;
}
void backt (int k)
{
for (int i=1;i<=n;i++)
{
x[k]=i;
if (verif (k))
{
afisare (x,k);
backt (k+1);
}
}
}
int main()
{
cin>>n;
backt (1);
return 0;
}
METODA 2
#include <iostream>
using namespace std;
int n,x[100],l;
void afisare (int x[ ],int n)
{
cout<<"{";
for (int i=1;i<=n;i++)
if (i==n)
cout<<x[n]<<"}";
else
cout<<x[i]<<" ";
cout<<endl;
}
int verif (int k)
{
if (k>1 && x[k]<=x[k-1])
return 0;
}
void backt (int k,int l)
{
for (int i=1;i<=n;i++)
{
x[k]=i;
if (verif (k))
if (k==l)
afisare (x,l);
else
backt (k+1,l);
}
}
int main()
{
cin>>n;
for (int l=1;l<=n;l++)
backt (1,l);
return 0;
}
No comments:
Post a Comment