非递归实现输出全排列(或部分排列)
来源:互联网 发布:百度知道和知乎 编辑:程序博客网 时间:2024/06/06 14:24
平时输出排列我们几乎都是使用递归的方式,这样思维清晰也容易写,但最近心血来潮写了个非递归的排列方式。代码如下
#include <iostream>#include<algorithm>#include<cstdio>#include<string>#include<map>#include<vector>using namespace std;int level;int a[10];//bool visited[10];int n,m;int main() { cin>>n>>m; int *a=new int[m]; bool *visited=new bool[m]; level=0; for(int i=0;i<m;i++) a[i]=-1; while(1) { int minn=-1; for(int i=0;i<m;i++) if(!visited[i]&&i>a[level]) { minn=i; break; } if(minn==-1) { if(level==0) break; visited[a[level]]=false; a[level]=-1; level--; continue; } else { if(a[level]!=-1) visited[a[level]]=false; a[level]=minn; visited[a[level]]=true; level++; } if(level==n) { for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; level--; } } return 0;}
其中n为输出个数,m为数字个数,当然大于十时,输出不是很好看。
0 0
- 非递归实现输出全排列(或部分排列)
- 全排列非递归实现
- 全排列非递归实现
- 非递归全排列实现
- 全排列--非递归实现
- 全排列非递归实现
- 全排列---非递归实现
- 输出全排列(递归&非递归)
- 全排列(非递归)
- 全排列(递归与非递归实现)
- 非递归全排列
- 全排列非递归
- 非递归全排列
- 全排列非递归
- 递归输出全排列
- 递归 输出全排列
- 全排列(递归与非递归)
- 全排列生成 (递归+非递归)
- DIY主机
- LCS 问题
- 第3章 外科手术队伍
- qt程序打包发布以及依赖
- 17.04.29 A Simple Problem
- 非递归实现输出全排列(或部分排列)
- 今天作业
- what's is build?
- Entity Framework Code First属性映射约定
- 一步一步理解线段树
- 接手别人的代码,死的心有吗?
- GDOI2017总结
- 单向链表实现堆栈
- Entity Framework Code First关系映射约定