找出1到n所有不重复的排列,即n的全排列。
来源:互联网 发布:淘宝童鞋运动少女 编辑:程序博客网 时间:2024/05/20 07:35
解法一:
#include <iostream>#include <vector>using namespace std;//打印结果void printSolution(const vector<int> &v){ for (vector<int>::const_iterator it = v.begin();it != v.end();++it) { cout<<*it<<' '; } cout<<endl;}//构造递归函数,放第i个位置的数void fun(vector<int> &v, vector<int> &f, int i){ int n = v.size(); for (int j=1;j<=n;++j) { //如果数j没有出现过,则第i个位置放j if (!f[j-1]) { f[j-1] = 1; v[i] = j; //如果数全部放完,则打印结果 if (i == n-1) { printSolution(v); } else { fun(v, f, i+1); } //回溯 f[j-1] = 0; } }}int main(){ cout<<"输入n的值:"; int n; cin>>n; if (n<1) { cout<<"输入有误!"<<endl; exit(1); } //记录全排列 vector<int> v(n,0); //f[i]记录i+1是否出现过 vector<int> f(n,0); fun(v, f, 0); return 0;}
运行结果:
1 0
- 找出1到n所有不重复的排列,即n的全排列。
- 1到n的全排列
- 1到n的全排列实现
- 输出 1 到 n 的全排列
- 1到n的所有排列情况
- 1-n的全排列
- n的全排列
- n的全排列
- n的全排列
- 用dfs实现1到n的全排列
- ACM-写出1到n的全排列
- 求1到n的全排列(搜索入门)
- 1到n全排列的真正复杂度
- n个数的全排列
- N个数的全排列
- 输出n的全排列
- n个数的全排列
- N个数的全排列
- C#之二十三 打印和水晶报表
- List和ListIterator的常见用法及特性
- leetcode 13 Roman to Integer C++
- TCPClient.py&TCPServer.py——自顶向下方法实例
- Java 学习笔记
- 找出1到n所有不重复的排列,即n的全排列。
- poj 1064 Cable master
- 移动开发生态渐成
- Java进阶学习第十一天——cookie&session入门
- 随想2016
- 通过UIWindow创建状态栏的通知
- 60个有用CSS代码片段
- 1011 Problem K
- 关于无线传感器网络(WSN)的学术会议和期刊