全排列

#include<bits/stdc++.h>
using namespace std;
int pl[1001];
void print (int n){for(int i=1;i<=n;i++) cout<<"    "<<pl[i];cout<<endl;
}
void pp(int n,int pos=1){if(pos==n+1) {print(n);return ;}for(int i=1;i<=n;i++){bool ok=1;for(int j=1;j<pos;j++){if(pl[j]==i) ok=0;}if(ok) {pl[pos]=i;        pp(n,pos+1);}}
}
int main(){int n;cin>>n;pp(n);return 0;
}

有重复元素的全排列//然而并不能过所有测试点

#include<bits/stdc++.h>
using namespace std;
char pl[1001];
int cnt;
void print(int n){for(int i=0;i<n;i++)cout<<pl[i];cnt++;cout<<endl;
}
void pp(char p[],int n,int pos=0){if(pos==n){print (n);return ;}for(int i=0;i<n;i++){if(i==0||p[i]!=p[i-1]){int c1=0,c2=0;c1=count (pl,pl+pos,p[i]);c2=count (p,p+n,p[i]);if(c1<c2){pl[pos]=p[i];pp(p,n,pos+1);}}}
}
int main(){int n;char ddd[2000];cin>>n;for(int i=0;i<n;i++){cin>>ddd[i];}pp(ddd,n);cout<<cnt;return 0;
}

所以我用STL模板

STL大法好

这里是char类型的

#include<bits/stdc++.h>
using namespace std;
int main(){long long cnt=0;ios::sync_with_stdio(false);char dd[5000];int n;cin>>n;for(int i=0;i<n;i++)cin>>dd[i];sort (dd,dd+n);do{for(int i=0;i<n;i++){printf("%c",dd[i]);}cnt++;printf("\n");}while(next_permutation(dd,dd+n));printf("%d",cnt);return 0;
}

转载于:https://www.cnblogs.com/luv-letters/p/8479881.html

【模板】 全排列 有重复元素的全排列相关推荐

  1. 九章算法面试题54 带重复元素的全排列

    九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...

  2. 算法学习——求有重复元素的全排列(递归)

    算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...

  3. 7-1 有重复元素的全排列 (10 分)

    7-1 有重复元素的全排列 (10 分) 计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素) 输入格式: 第一行输入数字的数量n(n>2),第二行给出每一个数字. 输出格式: 一 ...

  4. 全排列:不含重复元素和含重复元素的全排列

    1.不含重复元素 算法思路: 1.n个元素全排列 = (n-1)个元素的全排列+(另一个元素作为前缀) 2.出口:如果只有一个元素的全排列,则说明已经排完,输出数组: 3.不断将每个元素放在第一个元素 ...

  5. LeetCode Permutations II(有重复元素的全排列)

    问题:给出一个有重复元素的数组,要求输出全排列 思路:先排序,然后使用next_permutation 具体代码参考: https://github.com/wuli2496/OJ/tree/mast ...

  6. 减治求有重复元素的全排列

    求n个元素的全排列的所有解可以用减治法:每次拎出一个数做前缀,对剩下的元素再求全排列,直至只剩一个元素.代码源自<算法分析与设计(王晓东)>,复杂度O(n!) 1 //输出k~m的所有全排 ...

  7. 包含重复元素的全排列

    #include<iostream> #include<fstream> #include<algorithm> using namespace std;int n ...

  8. “九韶杯”河科院 D.数列重组(含重复元素的全排列+构造方法)

    对于含有重复元素序列的全排列,为了再次排列后得到的序列中各不重复,需要用到c++中的do{}while(next_permutation(a,a+n))函数 对于判断每次排序后的序列是否符合条件,用到 ...

  9. E. Tyler and Strings(组合计数 + 树状数组/线段树)(带重复元素的全排列)

    题目链接 主要思路还是比较好想的,一些细节公式预处理比较难搞- 参考题解 分析 从前往后遍历,如果s[]剩下的数中,s[i] < t[i]则对答案是有贡献的: 贡献就是后面位置[i+1 ~ n] ...

最新文章

  1. 浅谈单片机程序设计中的“分层思想”!
  2. Requirejs加载超时问题的一个解决方法:设置waitSeconds=0
  3. 按字符串长度切割字符串(支持汉字占2个长度)
  4. Datatables表格数据初始化时回调函数中修改要显示的值
  5. 单链表带头结点不带头结点
  6. 判别模型、生成模型与朴素贝叶斯方法
  7. Eclipse和PyDev搭建完美Python开发环境(Windows篇)
  8. ElasticSearch 集群监控
  9. 读掘金小册组件精讲总结1
  10. 读书笔记 摘自:《斯坦福极简经济学》
  11. 华为路由器Nasp设置 以及直连路由,静态路由,缺省路由,
  12. 关于电脑使用的实用技巧
  13. 高德地图样式主题设置
  14. 小武学fpgastep4
  15. web前端图片极限优化策略
  16. 问题 C: 货币系统
  17. 战旗类DotA游戏原代码及项目报告
  18. VQA系列论文(三)
  19. 飞行器识别---综述
  20. 作为硬件工程师,常用设计资源合集

热门文章

  1. scala元组的创建入门实例
  2. Vuex与登录状态保存
  3. Scala 空返回值Unit
  4. Python Django 原生SQL查询(游标Cursor)
  5. VMWare NAT模式和桥接模式的区别
  6. Spring MVC--使用默认的servlet来响应静态文件
  7. esxi6.7虚拟机网卡连接第二个虚拟交换机_Linux云计算底层技术之网络虚拟化
  8. java内部类的作用
  9. C++11:继承构造函数
  10. 中柏ezpadE7装linux,中柏EZbook 2笔记本U盘安装win7系统的操作教程