From 8f8426b4f887b046990cde095969235d735d38cb Mon Sep 17 00:00:00 2001 From: Jens Gerlach Date: Tue, 24 Nov 2015 15:13:46 +0100 Subject: [PATCH] compute permutations by std::next_permutation --- src/util.cpp | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index de8f73571..6e4d89d48 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include "OutputMgr.h" #include "AbsProgramGenerator.h" #include "CGOptions.h" @@ -81,28 +82,22 @@ gensym(const string& basename) */ vector permute(intvec in) { - vector out; /* basic cases */ - if (in.size()==0) return out; + std::vector out; + if (in.size() == 0) { + return out; + } + + out.push_back(in); if (in.size() == 1) { - out.push_back(in); return out; } - /* extended cases: divide the array into head and tail, permute - tail, then insert head into all possible positions in tail */ - int head = in[0]; - intvec tail = in; - tail.erase(tail.begin()); - vector tails = permute(tail); - size_t i, j; - for (i=0; i