Pagini recente » Cod sursa (job #675028) | Cod sursa (job #2130562) | Cod sursa (job #3267192) | Cod sursa (job #2955207) | Cod sursa (job #1456964)
#include <fstream>
//#include <iostream>
using namespace std;
ifstream fin("combinari.in");
ofstream fout("combinari.out");
int a[20], n, m; //, nrsol
void afisare() // afiseaza solutia
{
for(int i = 1; i <= m; i++)
fout << a[i] << ' ';
fout << '\n';
}
bool valid(int k) // verifica daca numerele precedente
{ // au fost asezate corect
for(int i = 1; i < k; i++) // ex : 1 3 3
if(a[k] <= a[i]) // a[2] == a[3] => return 0
return false; // daca era 1 3 4 => return 1
return true;
}
void back(int k)
{
if(k == m + 1) // daca avem atatea numere ca in cazul nostru
{ // afisam solutia
afisare();
//++nrsol;
return;
}
else // daca nu intram pe back
{
for(int i = 1; i <= n; i++)
{
a[k] = i; // bagam numerele in vector
if(valid(k) == true) // si le verificam la pasul acesta
{ // daca sunt corect pozitionate
back(k + 1); // in functie de valid(), daca da,
} // intra pe back mai departe
}
}
}
int main()
{
fin >> n >> m;
back(1);
//cout << nrsol;
return 0;
}