Pagini recente » Monitorul de evaluare | Diferente pentru problema/poligon2 intre reviziile 3 si 4 | Cod sursa (job #2635511) | Diferente pentru problema/eq4 intre reviziile 21 si 2 | Cod sursa (job #1366803)
#include <iostream>
using namespace std;
int a[20], n, m, nrsol;
void afisare()
{
for(int i = 1; i <= m; i++)
fout << a[i] << ' ';
fout << '\n';
}
bool valid(int k)
{
for(int i = 1; i < k; i++)
if(a[k] == a[i] or a[k] < a[i])
return false;
return true;
}
void backtracking(int k)
{
if(k == m + 1)
{
afisare();
nrsol++;
}
else
{
for(int i = 1; i <= n; i++)
{
a[k] = i;
if(valid(k) == true)
{
backtracking(k + 1);
}
}
}
}
int main()
{
ifstream fin("combinari.in");
ifstream fout("combinari.out");
fin >> n >> m;
backtracking(1);
cout << nrsol;
return 0;
}