Cod sursa(job #1413415)
| Utilizator | Data | 1 aprilie 2015 20:59:57 | |
|---|---|---|---|
| Problema | Combinari | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.7 kb |
#include <fstream>
#define NMAX 20
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int i, n, v[NMAX], k, m;
void afisare()
{
for (int i=1; i<=n; ++i)
g<<v[i]<<" ";
g<<'\n';
}
bool ok()
{
for (i=1; i<=k-1; ++i)
if (v[i]>=v[k]) return 0;
return 1;
}
void backtracking()
{
k=1;
while (k)
{
bool gasit=0;
while (!gasit && v[k]<m)
{
v[k]++;
if (ok()) gasit=1;
}
if (gasit==0) k--;
else
if (k==n) afisare();
else
v[++k]=0;
}
}
int main()
{
f>>m>>n;
backtracking();
return 0;
}
