Pagini recente » Cod sursa (job #2717730) | Cod sursa (job #580082) | Cod sursa (job #1702469) | Cod sursa (job #245824) | Cod sursa (job #282209)
Cod sursa(job #282209)
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
using namespace std;
#define NDEBUG
typedef unsigned char byte;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned long long ulonglong;
ostream * out;
template<class T>
void show (const vector<T>& v)
{
copy(v.begin(), v.end(), ostream_iterator<T>(*out, " "));
*out << endl;
}
template<class T>
void generateAll (vector<T>& result, int resultSize, int pos = 0)
{
for (uint i = 0; i < resultSize; i++)
{
typename vector<T>::iterator end = result.begin()+pos;
if(!result.empty() && find(result.begin(), end, i+1) != end)
continue;
result.at(pos) = i+1;
if (pos < resultSize-1) {
generateAll (result, resultSize, pos+1);
} else {
show(result);
}
}
}
int main()
{
const char * inFile = "permutari.in";
const char * outFile = "permutari.out";
ifstream fin(inFile);
ofstream fout(outFile);
#ifndef NDEBUG
if(!fin || !fout) {
cerr << "Error opening one of \"" << inFile << "\" or \"" << outFile << "\"" << endl;
return -1;
}
#endif
ushort size;
fin >> size;
std::vector<ushort> result(size);
out = &fout;
generateAll (result, size);
fout.close();
fin.close();
return 0;
}