网站首页
网站导航
Ctrl+D收藏
首 页
代码段
源码包
文档库
工具箱
代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C/C++
】
排列组合生成
作者:
天顺
/ 发布于
2016/4/21
/
168
//gen_perm产生字典序排列P(n,m) //gen_comb产生字典序组合C(n,m) //gen_perm_swap产生相邻位对换全排列P(n,n) //产生元素用1..n表示 //dummy为产生后调用的函数,传入a[]和n,a[0]..a[n-1]为一次产生的结果 #define MAXN 100 int count; #include <iostream.h> void dummy(int* a,int n){ int i; cout<<count++<<": "; for (i=0;i<n-1;i++) cout<<a[i]<<' '; cout<<a[n-1]<<endl; } void _gen_perm(int* a,int n,int m,int l,int* temp,int* tag){ int i; if (l==m) dummy(temp,m); else for (i=0;i<n;i++) if (!tag[i]){ temp[l]=a[i],tag[i]=1; _gen_perm(a,n,m,l+1,temp,tag); tag[i]=0; } } void gen_perm(int n,int m){ int a[MAXN],temp[MAXN],tag[MAXN]={0},i; for (i=0;i<n;i++) a[i]=i+1; _gen_perm(a,n,m,0,temp,tag); } void _gen_comb(int* a,int s,int e,int m,int& count,int* temp){ int i; if (!m) dummy(temp,count); else for (i=s;i<=e-m+1;i++){ temp[count++]=a[i]; _gen_comb(a,i+1,e,m-1,count,temp); count--; } } void gen_comb(int n,int m){ int a[MAXN],temp[MAXN],count=0,i; for (i=0;i<n;i++) a[i]=i+1; _gen_comb(a,0,n-1,m,count,temp); } void _gen_perm_swap(int* a,int n,int l,int* pos,int* dir){ int i,p1,p2,t; if (l==n) dummy(a,n); else{ _gen_perm_swap(a,n,l+1,pos,dir); for (i=0;i<l;i++){ p2=(p1=pos[l])+dir[l]; t=a[p1],a[p1]=a[p2],a[p2]=t; pos[a[p1]-1]=p1,pos[a[p2]-1]=p2; _gen_perm_swap(a,n,l+1,pos,dir); } dir[l]=-dir[l]; } } void gen_perm_swap(int n){ int a[MAXN],pos[MAXN],dir[MAXN],i; for (i=0;i<n;i++) a[i]=i+1,pos[i]=i,dir[i]=-1; _gen_perm_swap(a,n,0,pos,dir); }
评论列表
本站所提供的代码,版权归原作者所有,若有侵犯作者版权,请与我们联系,我们将立即删除或修改。谢谢!
本站所有代码发布及提供者。
试试其它关键字
排列组合
同语言下
.
C分鱼问题
.
链表
.
最大连续和
.
编码字符串
.
libiconv字符编码处理及判断字符串是否为utf8
.
一组数中两两二元组,差最大有几对,差最小呢?(数组
.
通过管道获取一个进程的执行状态
.
多关键字排序
.
字符串字典序排序
.
3元一次方程(牛顿迭代法求方程的根)
可能有用的
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
判断用户输入的是否为IP地址
天顺
贡献的其它代码
(
18
)
.
获取url中的参数
.
数据库查询语句构造类
.
字符相似度对比通用类
.
带毫秒的字符转换成时间(DateTime)格式的通用方法
.
批量替换字段中的字符
.
查询每所学校语文成绩最高的学生信息
.
检查代理ip的有效性
.
jquery增加table的行数
.
实现开灯关灯效果
.
Table 固定宽度和换行
地图
本站
我们
服务
版权
联系
回馈
博客