Pagini recente » Cod sursa (job #2887147) | Cod sursa (job #1109097) | Cod sursa (job #1576969) | Cod sursa (job #2174324) | Cod sursa (job #877238)
Cod sursa(job #877238)
#include <fstream>
using namespace std;
ifstream in("permutari.in");
ofstream out("permutari.out");
// st - stiva in care memorez elementele permutarii
// k - nivelul stivei
// N - numarul elementelor permutarii
int st[9], k, N;
// variabile flag: ev (este valid?), as (are succesor?)
bool ev, as;
void init()
{ st[k] = 0; }
bool succesor()
{
if (st[k] < N) { st[k] += 1; return true; }
return false;
}
bool valid()
{
for (int i = 1; i < k; i++)
if (st[k] == st[i]) return false;
return true;
}
bool solutie() { return k == N; }
void tipar()
{
for (int i = 1; i <= k; i++)
out << st[i] << ' ';
out << '\n';
}
void bt()
{
k = 1; init();
while (k > 0)
{
do
{
as = succesor();
if (as) ev = valid();
} while (as && !ev);
if (as)
{
if (solutie()) tipar();
else { k++; init(); }
}
else k--;
}
}
int main()
{
in >> N;
bt();
return 0;
}