【模板】 全排列 && 有重复元素的全排列
全排列
- #include<bits/stdc++.h>
- using namespace std;
- int pl[];
- void print (int n){
- for(int i=;i<=n;i++) cout<<" "<<pl[i];
- cout<<endl;
- }
- void pp(int n,int pos=){
- if(pos==n+) {
- print(n);
- return ;
- }
- for(int i=;i<=n;i++){
- bool ok=;
- for(int j=;j<pos;j++){
- if(pl[j]==i) ok=;
- }
- if(ok) {
- pl[pos]=i;
- pp(n,pos+);
- }
- }
- }
- int main(){
- int n;
- cin>>n;
- pp(n);
- return ;
- }
有重复元素的全排列//然而并不能过所有测试点
- #include<bits/stdc++.h>
- using namespace std;
- char pl[];
- int cnt;
- void print(int n){
- for(int i=;i<n;i++)
- cout<<pl[i];
- cnt++;
- cout<<endl;
- }
- void pp(char p[],int n,int pos=){
- if(pos==n){
- print (n);
- return ;
- }
- for(int i=;i<n;i++){
- if(i==||p[i]!=p[i-]){
- int c1=,c2=;
- 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+);
- }
- }
- }
- }
- int main(){
- int n;
- char ddd[];
- cin>>n;
- for(int i=;i<n;i++){
- cin>>ddd[i];
- }
- pp(ddd,n);
- cout<<cnt;
- return ;
- }
所以我用STL模板
STL大法好
这里是char类型的
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- long long cnt=;
- ios::sync_with_stdio(false);
- char dd[];
- int n;
- cin>>n;
- for(int i=;i<n;i++)
- cin>>dd[i];
- sort (dd,dd+n);
- do{
- for(int i=;i<n;i++){
- printf("%c",dd[i]);
- }
- cnt++;
- printf("\n");
- }while(next_permutation(dd,dd+n));
- printf("%d",cnt);
- return ;
- }
【模板】 全排列 && 有重复元素的全排列的更多相关文章
- Concise and clear CodeForces - 991F(dfs 有重复元素的全排列)
就是有重复元素的全排列 #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace ...
- poj3421 X-factor Chains(重复元素的全排列)
poj3421 X-factor Chains 题意:给定正整数$x(x<=2^{20})$,求$x$的因子组成的满足任意前一项都能整除后一项的序列的最大长度,以及满足最大长度的子序列的个数. ...
- 紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)
我一开始以为有什么很牛逼的方法来做,然后一直没有思路 后来看了https://blog.csdn.net/zju2016/article/details/78562932的博客 竟然是暴搜?????? ...
- 离散化模板题 II ——重复元素离散化后的数字不相同
离散化模板题 II --重复元素离散化后的数字不相同 题目描述 现有数列A1, A2, ⋯, An,数列中可能有重复元素. 现在要求输出该数列的离散化数列,重复元素离散化后的数字不相同. 输入 第一行 ...
- 离散化模板题 I ——重复元素离散化后的数字相同
离散化模板题 I --重复元素离散化后的数字相同 题目描述 现有数列A1, A2, ⋯, An,数列中可能有重复元素. 现在要求输出该数列的离散化数列,重复元素离散化后的数字相同. 输入 第一行,一 ...
- 剑指 Offer 38. 字符串的排列 + 无重复元素的全排列
剑指 Offer 38. 字符串的排列 Offer_38 题目描述 解题思路 可以使用递归实现全排列,每次都确定一个数的位置,当所有位置的数都确定后即表示一个排列. 但是考虑到本题需要排除重复的排列, ...
- 刷题——有重复元素的全排列(Permutations II)
题目如上所示. 我的解决方法(参考了九章的答案!): class Solution { public: /* * @param : A list of integers * @return: A li ...
- dfs 全排列 使用交换——含重复元素和非重复元素
15. 全排列 中文 English 给定一个数字列表,返回其所有可能的排列. 样例 样例 1: 输入:[1] 输出: [ [1] ] 样例 2: 输入:[1,2,3] 输出: [ [1,2,3], ...
- [leetcode]47. Permutations全排列(给定序列有重复元素)
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
随机推荐
- Webapi上传数据(XML)敏感字符解决方案
方法名加特性 [ValidateInput(false)] 配置文件加 <httpRuntime requestValidationMode="2.0" targetFram ...
- fast powf
测试结果: sum (fast) in clock 1562sum (fast2) in clock 1407sum (fast3) in clock 3156sum in clock 7797Err ...
- 【转】4G18的低成本NA玩法
首先是要再次强调一次,4G18的缸径是76MM,冲程是87.5MM.属于典型的长冲程低转发动机! 这种设计的优点是比较适合市区走停的工作状况,省油. 如果要针对改装方案而言因为这种低转时便可输出大扭矩 ...
- Day 35 验证客户端的合法性+socketserver
一 .getpeername和getsoketopt的用法 服务器端代码 import socket sk =socket.socket() sk.bind(('127.0.0.1',9000)) s ...
- BZOJ4825: [Hnoi2017]单旋(Splay)
题面 传送门 题解 调了好几个小时--指针太难写了-- 因为只单旋最值,我们以单旋\(\min\)为例,那么\(\min\)是没有左子树的,而它旋到根之后,它的深度变为\(1\),它的右子树里所有节点 ...
- 二,windows下安装memcached服务
window下安装memcached服务的流程如下: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 ‘c ...
- 算法逆向6——RSA识别
本文原创作者:i春秋作家——icq5f7a075d 1. 算法介绍 RSA算法是一种用数论构造的.基于大合数因子分解困难性的公开密钥密码.由于RSA密码既可用于加密,又可用于数字签名,安全.易懂,因此 ...
- 图片后门恶意捆绑工具FackImageexploer
本文作者:夜莺 今天向大家提个醒,最近有一款工具名叫FackImageexploer,该工具能够将恶意的.bat和.exe程序与图片绑定在一起,假若受害者点击了图片,就会反弹个shell给不法分子,如 ...
- (6)Oracle基础--简单查询
.基本查询语句 SELECT [DISTINCT] column_name1,... | * FROM table_name [WHERE conditions]; P: DISTINCT关键字的作 ...
- springMvc的执行流程(源码分析)
1.在springMvc中负责处理请求的类为DispatcherServlet,这个类与我们传统的Servlet是一样的.我们来看看它的继承图 2. 我们发现DispatcherServlet也继承了 ...