高效的编码帮助 我现在正在C++中编写代码来寻找6个整数的所有可能排列,并存储最佳排列(即总的值与给定值最接近的一个)。
我正试图尽可能高效地编写这段代码,并希望得到任何建议或示例高效的编码帮助 我现在正在C++中编写代码来寻找6个整数的所有可能排列,并存储最佳排列(即总的值与给定值最接近的一个)。,c++,pointers,C++,Pointers,我正试图尽可能高效地编写这段代码,并希望得到任何建议或示例 我正在考虑将整数存储在数组中,并在循环中使用指针执行排列。这是一个好方法吗 看看这篇优秀的帖子@:。它有完整的代码,由一位同事编写,应该足以让您走上正确的道路。他们已经为您想到了这个: #include <algorithm> int ra[6] = { 1, 2, 3, 4, 5, 6 }; do { // whatever } while (std::next_permutation(ra, ra+6));
我正在考虑将整数存储在数组中,并在循环中使用指针执行排列。这是一个好方法吗 看看这篇优秀的帖子@:。它有完整的代码,由一位同事编写,应该足以让您走上正确的道路。他们已经为您想到了这个:
#include <algorithm>
int ra[6] = { 1, 2, 3, 4, 5, 6 };
do {
// whatever
} while (std::next_permutation(ra, ra+6));
#包括以获取详细信息
它可能无法提供尽可能快的运行时间,因为在每一步中,它都必须检查数组以确定要更改的内容。但这无疑是程序员工作中最有效的,而且在不了解编译器和平台的情况下,实际上不可能对嵌套循环方法进行微优化。假设重复的数字不是问题,那么就有n!n个整数的读入(一次取n)。所以无论你做什么,你的算法都会有阶乘时间行为(O(n^n))
换句话说,当n变大时,它将变慢。对不起
实际上,页面上有这样做的算法
我在考虑存储整数
在数组中执行
在一个数组中使用指针的置换
环这是一个好方法吗
不,这不是个好办法。与其交换指向数组中项目的指针,不如交换数组中的项目。指针只是一个额外的间接步骤,没有任何真正的目的。在SO中有很多关于排列的问题。请搜索“排列”,您将得到答案;也许它们不是您正在使用的同一种语言(C++)或同一种结构(即使用字符串),但您可以进行调整。幸运的是,n是6,因此算法是O(720);-)