Pagini recente » Istoria paginii runda/cartofel | Istoria paginii runda/cnrv_oji_1 | Cod sursa (job #3147914) | Istoria paginii runda/oni_11_12_11/clasament | Cod sursa (job #1366808)
#include <iostream>
#include <fstream>
using namespace std;
int a[20], n, m, nrsol;
ifstream fin("combinari.in");
ifstream fout("combinari.out");
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()
{
fin >> n >> m;
backtracking(1);
cout << nrsol;
return 0;
}