高效的编码帮助

use*_*572 2 c++ pointers

我目前正在用C++编写代码来查找6个整数的所有可能的排列并存储最佳排列(即总数最接近给定值的排列).

我正在尝试尽可能高效地编写此代码,并且会提供任何建议或示例.

我正在考虑将整数存储在一个数组中,并使用循环内的指针执行排列.这是一个好方法吗?

Ste*_*sop 14

他们已经为你想到了这个:

#include <algorithm>

int ra[6] = { 1, 2, 3, 4, 5, 6 };

do {
    // whatever
} while (std::next_permutation(ra, ra+6));
Run Code Online (Sandbox Code Playgroud)

请注意,元素必须以递增的顺序开始(通过运算符<进行比较),否则循环将在您看到每个排列之前终止.有关详细信息,请参见http://en.cppreference.com/w/cpp/algorithm/next_permutation.

它可能无法提供最快的运行时间,因为在每一步都必须检查数组以确定要更改的内容.但它在程序员工作中肯定是最有效的,并且在不知道编译器和平台的情况下,无论如何都不可能微观优化嵌套循环方法.