You are on page 1of 2

#include <iostream>

#include <fstream>
using namespace std;
ifstream f("back.in");
ofstream g("back.out");
int S[100], n;
void initializare (int k)
{
S[k] = 0;
}
int succesor (int k)
{
S[k]++;
if (S[k] <= n)
return 1;
else
return 0;
}
int verific (int k)
{
int i;
for (i = 1; i < k; i++)
if (S[k] == S[i])
return 0;
return 1;
}
int solutie (int k)
{
if (k == n)
return 1;
else
return 0;
}
void tiparire (int k)
{
int i;
for (i = 1; i <= k; i++)
g << S[i] << " ";
g << '\n';
}
int back (int k)
{
int ok1, ok2;
initializare(k);

while (k > 0)
{
do
{
ok1 = succesor(k);
ok2 = verific(k);
} while (ok1 && !ok2);
if (ok1)
{
if (solutie(k))
tiparire(k);
else
{
k++;
initializare(k);
}
}
else
k--;
}
}
int main() {
f >> n;
back(1);
return 0;
}

You might also like