Pagini recente » Cod sursa (job #2708589) | Cod sursa (job #403264) | Cod sursa (job #178378) | Cod sursa (job #138695) | Cod sursa (job #1255017)
#include <fstream>
#include <vector>
#include <unordered_set>
void printPerm(std::vector<int> &perm, std::ofstream &out)
{
for (auto &i : perm)
out << i + 1 << " ";
out << "\n";
}
bool isValid(std::vector<int> &perm)
{
std::unordered_set<int> set(perm.size());
for (auto i = 0u; i < perm.size(); ++i)
if (!set.count(perm[i]))
set.emplace(perm[i]);
else
return false;
return true;
}
void back(std::vector<int> &perm, std::size_t pos, std::ofstream &out)
{
if (pos == perm.size()) {
if (isValid(perm))
printPerm(perm, out);
return;
}
for (std::size_t i = 0; i < perm.size(); ++i) {
perm[pos] = i;
back(perm, pos + 1, out);
}
}
void genPerm(int N, std::ofstream &out)
{
std::vector<int> v(N, -1);
back(v, 0, out);
}
int main()
{
std::ifstream in("permutari.in");
std::ofstream out("permutari.out");
int N;
in >> N;
in.close();
genPerm(N, out);
out.close();
return 0;
}