生成可重集的排列
2015-07-17 09:36
330 查看
#include <iostream> #include <algorithm> using namespace std; int n, a[1010], p[1010]; bool cmp(int a, int b){ return a < b; } void print_permutation(int cur){ //cur 表示当前确定的元素位置; if(cur == n){ for(int i = 0; i < n-1; ++i){ cout << a[i] << ' '; } cout << a[n-1] << endl; } else{ for(int i = 0; i < n; ++i){ if(!i || p[i] != p[i-1]){ //枚举的i应该不重复,不遗漏的取遍所有的p[i]值; int c1 = 0, c2 = 0; for(int j = 0; j < n; ++j){ if(p[j] == p[i]) //p数组中p[i]出现的次数; ++c1; } for(int j = 0; j < cur; ++j){ if(a[j] == p[i]) //a数组中p[i]目前出现的次数; ++c2; } if(c2 < c1){ a[cur] = p[i]; print_permutation(cur+1); } } } } } int main() { int count(0), a; while(cin >> a){ p[count++] = a; } n = count; sort(p, p+n, cmp); print_permutation(0); }
相关文章推荐
- Android的Scroller介绍
- editplus打造java运行环境(安装、配置、操作)
- Spring MVC+FreeMarker实现页面按钮权限控制1
- iOS 收起键盘
- CodeForces 548C
- uva 11462 - Age Sort
- exec函数族用法
- iOS初学者
- 五个习惯——让你的工作更高效
- 颜色基础知识——CIE 1931色度坐标
- PHP实现无限级分类的2种方法——父值与左右值2
- 简约之美jodd--props属性使用
- Spring applicationContext.xml文件解析
- markdown相关
- 冒泡算法
- JavaScript调用浏览器打印功能实例分析
- 每个程序员都应该知道的福利
- Secure Delivery Center常见用例(一)
- linux系统中mysql修改密码并设置远程访问和解决mysql乱码问题
- 天声人語 20150717