如何编写一个简单的全排列算法示例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计376个文字,预计阅读时间需要2分钟。
本例展示了C++简单实现的全排列算法。以下是一个参考示例:
cpp#include #include
using namespace std;
// 交换数组中两个元素的位置void swap(vector& array, int i, int j) { int temp=array[i]; array[i]=array[j]; array[j]=temp;}
// 打印全排列void printPermutation(const vector& array) { for (int num : array) { cout < // 全排列算法void permutation(vector& array, int start, int end) { if (start==end) { printPermutation(array); } else { for (int i=start; i <=end; i++) { swap(array, start, i); permutation(array, start + 1, end); swap(array, start, i); // 回溯 } }} int main() { vector array={1, 2, 3}; int n=array.size(); permutation(array, 0, n - 1); return 0;} 该代码实现了全排列算法,首先定义了`swap`函数用于交换数组中两个元素的位置,`printPermutation`函数用于打印数组中的元素,最后`permutation`函数通过递归实现了全排列算法。主函数`main`中,定义了一个包含元素`1, 2, 3`的数组,并调用`permutation`函数计算其全排列。 本文实例讲述了C++简单实现的全排列算法。分享给大家供大家参考,具体如下:
#include "stdafx.h" #include <string> #include <algorithm> #include <iostream> void func(const char *str_in) { std::string str(str_in); std::sort(str.begin(),str.end()); do { std::cout<<str<<std::endl; }while (std::next_permutation(str.begin(),str.end())); } int _tmain(int argc, _TCHAR* argv[]) { func("cab"); return 0; }
希望本文所述对大家C++程序设计有所帮助。
本文共计376个文字,预计阅读时间需要2分钟。
本例展示了C++简单实现的全排列算法。以下是一个参考示例:
cpp#include #include
using namespace std;
// 交换数组中两个元素的位置void swap(vector& array, int i, int j) { int temp=array[i]; array[i]=array[j]; array[j]=temp;}
// 打印全排列void printPermutation(const vector& array) { for (int num : array) { cout < // 全排列算法void permutation(vector& array, int start, int end) { if (start==end) { printPermutation(array); } else { for (int i=start; i <=end; i++) { swap(array, start, i); permutation(array, start + 1, end); swap(array, start, i); // 回溯 } }} int main() { vector array={1, 2, 3}; int n=array.size(); permutation(array, 0, n - 1); return 0;} 该代码实现了全排列算法,首先定义了`swap`函数用于交换数组中两个元素的位置,`printPermutation`函数用于打印数组中的元素,最后`permutation`函数通过递归实现了全排列算法。主函数`main`中,定义了一个包含元素`1, 2, 3`的数组,并调用`permutation`函数计算其全排列。 本文实例讲述了C++简单实现的全排列算法。分享给大家供大家参考,具体如下:
#include "stdafx.h" #include <string> #include <algorithm> #include <iostream> void func(const char *str_in) { std::string str(str_in); std::sort(str.begin(),str.end()); do { std::cout<<str<<std::endl; }while (std::next_permutation(str.begin(),str.end())); } int _tmain(int argc, _TCHAR* argv[]) { func("cab"); return 0; }
希望本文所述对大家C++程序设计有所帮助。

