生成可重集的排列
来源:互联网 发布:mysql 日志保留时间 编辑:程序博客网 时间:2024/06/02 11:01
把数组中每个元素不重复的取到,并且不超过数组中某个元素的个数。
代码如下
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000+5;int res[maxn]; //统计数组中某个元素出现的次数void dfs(int *a,int *p,int cur,int n){ if(cur==n) { for(int i=0;i<n;++i) { printf("%d ",a[i]); } printf("\n"); } else for(int i=0;i<n;++i) { if(!i||p[i]!=p[i-1]) { int cnt=0; for(int j=0;j<cur;++j) { if(a[j]==p[i]) ++cnt; } if(cnt<res[p[i]]) { a[cur]=p[i]; dfs(a,p,cur+1,n); } } }}int main(){ int n; scanf("%d",&n); memset(res,0,sizeof(res)); int p[maxn],a[maxn]; for(int i=0;i<n;++i){ scanf("%d",&p[i]); res[p[i]]++; } sort(p,p+n); //排序,方便判定 dfs(a,p,0,n); return 0;}
如有不当之处欢迎指出!
0 0
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成可重集的排列
- 生成1~n的排列和生成可重集的排列
- 生成1~n的排列,以及生成可重集的排列
- 生成可重集的排列模板
- 生成1~n的排列 生成可重集的排列 下一个排列
- 暴力求解法_枚举排列(生成1~n 的排列,生成可重集的排列,下一个排列)
- UVA146生成可重集的下一个排列
- 7.2.2生成可重集的排列
- 排列的生成
- 全排列的生成
- 全排列的生成
- Android音量调节
- databinding的混淆
- iOS之自定义searchBar
- Lightoj 1066 Gathering Food(BFS)
- leetcode136&137:SingleNumber(medium)
- 生成可重集的排列
- Scala入门之部分应用函数与偏函数
- 变量成员变量和局部变量
- glide混淆
- HDU 1003 Max Sum
- CorelDRAW启动界面该如何设置
- 2035 人见人爱A^B
- MFC 中切换资源的两种方式
- self.navigationController.navigationBar.translucent = NO