Pagini recente » Cod sursa (job #2476611) | Cod sursa (job #1399061) | Cod sursa (job #373627) | Cod sursa (job #705267) | Cod sursa (job #778697)
Cod sursa(job #778697)
#include <fstream>
int main (void)
{
unsigned short n,k;
std::ifstream input("combinari.in");
input >> n >> k;
input.close();
n += '0';
char *set(new char [k]), *iterator(set), *end(set + k - 1);
char character('1');
do
{
*iterator = character;
++iterator;
++character;
}
while (iterator <= end);
std::ofstream output("combinari.out");
while (true)
{
// print
iterator = set;
while (true)
{
character = *iterator;
if (character > '9')
{
output.put('1');
character -= '0';
character %= 10;
character += '0';
}
output.put(character);
if (iterator == end)
break;
output.put(' ');
++iterator;
}
output.put('\n');
// generate next
++*end;
if (*end > n)
{
character = n - 1;
iterator = end - 1;
while (iterator >= set && *iterator == character)
{
--iterator;
--character;
}
// if the set is sorted in decreasing order the algorithm is finished
if (iterator < set)
break;
// otherwise increment current character sort the set [iterator, end]
++*iterator;
do
{
iterator[1] = *iterator + 1;
++iterator;
}
while (iterator < end);
}
}
output.close();
delete [ ] set;
return 0;
}