Pagini recente » Solutii preONI 2007, Runda 3 | Cod sursa (job #541287) | Cod sursa (job #1075575) | Cod sursa (job #1831233) | Cod sursa (job #1820723)
#include <fstream>
using namespace std;
ifstream F ("permutari.in");
ofstream G ("permutari.out");
int n, ams, ev, st[10];
int pune_val(int niv)
{
int ok = 0;
if(niv <= n && st[niv] < n)
ok = 1, st[niv] ++;
return ok;
}
int valid(int niv)
{
int ok = 1;
for(int i = 1; i < niv && ok; ++ i)
if(st[niv] == st[i])
ok = 0;
return ok;
}
int solutie(int niv)
{
return niv == n;
}
void tipar(int niv)
{
for(int i = 1; i <= niv; ++ i)
G << st[i] << " ";
G << '\n';
}
void backtr()
{
int k = 1;
while (k > 0)
{
do
{
ams = pune_val(k);
if(ams)
ev = valid(k);
}while (ams && !ev);
if(ams && ev)
{
if(solutie(k)) tipar(k);
else
k++, st[k] = 0;
}
else
k --;
}
}
int main()
{
F >> n;
backtr();
return 0;
}