全排列算法C++实现
//摘自算法笔记
#include<iostream>
using namespace std;
const int maxn=11;
int n,P[maxn],hashTable[maxn]={false};
void generateP(int index){if(index==n+1){//递归边界,已经处理完排列1~n位了//可以输出了for(int i=1;i<=n;i++){cout<<P[i];}cout<<endl;return;}for(int x=1;x<=n;x++){ //枚举1~n 试图将x填入P[index] 每次都从小到大枚举所有数字if(hashTable[x]==false){//如果x不在P[0]~P[index-1]中(前index-1已经填好了)P[index]=x; //将x填入P中 也即是index位hashTable[x]=true; //记x在P中generateP(index+1); //处理排列的第index+1号位hashTable[x]=false; //已经处理完P[index]为x的子问题,还原状态,让第index位填其他数字前要先将此x放开,否则没机会了}}
}int main(){while(cin>>n){generateP(1);//从1开始填}return 0;
}
//C++全排列函数
/*#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int num[3]={1,2,3};do{cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;}while(next_permutation(num,num+3));return 0;
}*/
全排列算法C++实现相关推荐
- [通用技术]在不同语言中用协程实现全排列算法(C++/Lua/Python/C#)
我这里实现全排列的基本算法如下(C++): 1 #include <algorithm> 2 #include <iostream> 3 #include <vector ...
- 【转】全排列算法非递归实现和递归实现
来源:http://blog.csdn.net/e3399/article/details/7543861 (一)递归的全排列算法 (A.B.C.D)的全排列为 1.A后面跟(B.C.D)的全排列 2 ...
- 全排列及相关扩展算法(一)——基础的回溯递归实现全排列算法
1.全排列的定义和公式: 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.由排列的定义,显然不同的顺序是一个不同的排列.从n个元素中取m个元素 ...
- 全排列的java算法_全排列算法原理和实现
评论 # re: 全排列算法原理和实现 回复 更多评论 #include #include #define CHESSNUM 9 using namespace std; /*********** ...
- 详讲全排列算法,及解决数字搭积木问题
如果你是做这道题不会,那么你可以看这道题的解题思路,如果你是不太理解全排列算法,那么你可以通过这个题来理解. 题目描述: 小明最近喜欢搭数字积木.一共有10块积木,每个积木上有一个数字,0~9. 搭积 ...
- 字符串全排列算法_C#版_剑指OFFER
字符串全排列算法_C#版_剑指OFFER 题目描述 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...
- FreeEIM 全排列算法原理和实现
FreeEIM 全排列算法原理和实现 本文为原创,如需转载,请注明作者和出处,谢谢! 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个.现以{1, 2, 3, 4, 5 ...
- C++ vector 容器的全排列算法 next_permutation
问题源于我要对4个数进行排列,自己用了笨拙的穷举算法一个4重循环也得到结果,其中对有相同字母的做排序加删除相邻相等元素的处理.可是如果对100个数进行排列难道用100重循环,后来发现C++11有现成的 ...
- 前端电商 sku 的全排列算法
前端电商 sku 的全排列算法 什么是sku 聊聊常见的需求 解决思路 思路分解 上代码 什么是sku 针对电商而言: 1.SKU是指一款商品,每款都有出现一个SKU,便于电商品牌识别商品. 2.一款 ...
- 组合算法/全排列算法/求子集算法
本文介绍组合算法,组合算法有很多,这里只介绍其中一种的两种形式. 全排列:全排列算法 组合:本文 子集算法:求子集算法 组合 leetcode实战:组合 给定两个整数 n 和 k,返回范围 [1, n ...
最新文章
- Best Time to Buy and Sell Stock II
- 华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020...
- python输入输出有问题_python – Modbus错误:[输入/输出]无从远程...
- 向DataTable中添加自定义的行
- java多线程总结五:线程池的原理及实现
- 服务器自检后显示scsi,请问一下,如何检测SCSI +RAID 5设置是否正确??
- 使用ArchUnit验证代码和体系结构约束
- [jQuery] jQuery和Zepto的区别?各自的使用场景?
- 移动web中的幻灯片切换效果
- ros机器人编程实践(12.2)- 用turtlebot仿真巡线机器人
- windows 删除php,windows软链接(mklink)的建立及删除的用法示例
- amazon账号关联|这三点要记牢
- lego_loam 代码阅读与总结
- 中年转行,拥抱互联网(上)
- 初学C语言,还在犹豫如何选择入门教材吗?这几本书籍建议收藏
- 3D打印机故障问题与解决总集
- Android 实现FlowLayout流式布局(热门标签)
- 美团基于跨平台 Flutter 的动态化平台建设
- 中国降低京沪高铁票价和速度
- BM1684实战记录