diff options
Diffstat (limited to 'challenge-191/deadmarshal/cpp/ch-2.cpp')
| -rw-r--r-- | challenge-191/deadmarshal/cpp/ch-2.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-191/deadmarshal/cpp/ch-2.cpp b/challenge-191/deadmarshal/cpp/ch-2.cpp new file mode 100644 index 0000000000..9af54816b1 --- /dev/null +++ b/challenge-191/deadmarshal/cpp/ch-2.cpp @@ -0,0 +1,34 @@ +#include<iostream> +#include<vector> + +bool is_cute(const std::vector<int>& vec) +{ + for(std::size_t i = 1; i <= vec.size(); ++i) + if((i % vec[i-1]) && (vec[i-1] % i)) return false; + return true; +} + +void permute(std::vector<int>& vec, int i, std::size_t sz, int *count) +{ + if(sz == i) + { + if(is_cute(vec)) (*count)++; + return; + } + for(std::size_t j = i; j < sz; ++j) + { + std::swap(vec[i], vec[j]); + permute(vec,i+1,sz,count); + std::swap(vec[i], vec[j]); + } + return; +} + +int main() +{ + std::vector<int> vec{1,2}; + int count{}; + permute(vec,0,2,&count); + std::cout << count << '\n'; + return 0; +} |
