Pagini recente » Cod sursa (job #2134004) | Cod sursa (job #446873) | Cod sursa (job #1384406) | Cod sursa (job #391323) | Cod sursa (job #2171215)
#include <fstream>
using namespace std;
ifstream fin ("permutari.in");
ofstream fout ("permutari.out");
int n, st[10], i, ams, ev;
int pune_val (int niv)
{
int ok = 0;
if (niv <= n && st[niv] < n)
{
st[niv]++;
ok = 1;
}
return ok;
}
int validare (int niv)
{
int ok = 1;
for (i=1; i<niv; i++)
if (st[i] == st[niv])
ok = 0;
return ok;
}
int solutie (int niv)
{
if (n == niv)
return 1;
return 0;
}
void tipar ()
{
for (i=1; i<=n; i++)
fout << st[i] << ' ';
fout << '\n';
}
void backtr()
{
int niv = 1;
while (niv>0)
{
do
{
ams = pune_val (niv);
if (ams == 1)
ev = validare (niv);
}
while (ams == 1 && ev == 0);
if (ams == 1 && ev == 1)
{
if (solutie (niv) == 1)
tipar ();
else
{
niv++;
st[niv] = 0;
}
}
else
niv--;
}
}
int main ()
{
fin >> n;
backtr();
}