Pagini recente » Cod sursa (job #1435855) | Cod sursa (job #1791126) | Cod sursa (job #1408865) | Cod sursa (job #2492303) | Cod sursa (job #2642233)
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
int v[19];
int fact (int n)
{
if (n > 1)
return n * fact(n - 1);
else
return 1;
}
int main()
{
ifstream in("submultimi.in");
ofstream out("submultimi.out");
int n, m, i, j, k;
bool terminat;
in >> n;
for (m = n; m > 0;)
{
for (i = 1; i <= n; i++)
{
for (j = n - m + 1; j <= i; j++)
out << j << " ";
if (n - m + 1 <= i)
out << "\n";
}
m--;
if (m > 1)
{
terminat = false;
for (i = 1; i <= m; i++)
v[i] = i;
v[m + 1] = n + 1;
j = m;
for (k = 2; k < fact(n) / (fact(m) * fact(n - m)); k++)
{
while (j > 0 && v[j] >= v[j + 1] - 1)
j--;
v[j]++;
for (i = j + 1; i <= m; i++)
v[i] = v[i - 1] + 1;
for (i = 1; i <= m; i++)
out << v[i] << " ";
j = m;
out << "\n";
}
}
}
return 0;
}