【模板】 全排列 && 有重复元素的全排列
全排列
#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 ...
随机推荐
- Ubuntu16.04 - 安装Courier New字体
这应该是一个很简单的任务吧?网上很多地方告诉我们,只要在shell终端里面执行命令:"sudo apt-get installttf-mscorefonts-installer"就 ...
- 713. Subarray Product Less Than K
Your are given an array of positive integers nums. Count and print the number of (contiguous) subarr ...
- java中关键字static和final
面向对象的不足 凡是有利必有弊,强对象编程,使得语法简单统一,但也有其缺点,而且有很多.我们在接下来的课程里会一点点接触到.我们今天先看第一个. 有些变量和函数确实没必要定义在一个类里.强行规定这些函 ...
- Chrome谷歌浏览器已停用不支持的扩展程序解决方法
在不能上外网的情况下解决该问题: http://www.liu16.com/post/Chrome_2447.html
- xp——极限编程的几个方法
最近阅读<Head First Java>一书时,看到极限编程(XP)的概念,觉得很有趣,摘抄下来以备后期继续学习. 极限编程(XP)是一种新型的软件开发方法论.他的构想是结合了许多种&q ...
- 【11】JMicro微服务-配置管理
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到10小节 JMicro目前仅支持基于Zookeeper做配置管理,全部配置信息可以在ZK做增删改查 ...
- windows7下部署tomcat
需要准备的软件: 1.JDK 安装程序 2.Tomcat 安装程序 JDK安装步骤: 安装方式:使用安装程序进行安装.使用JDK文件夹,免安装,以下步骤使用的是文件夹免安装,只需配置环境变量 配置环境 ...
- POJ 2304
#include<iostream>// cheng da cai zi 11. 18 解锁问题 using namespace std; #define f 360 int main() ...
- (转)Python3.5——装饰器及应用详解
原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.c ...
- (转)修改及查看mysql数据库的字符集
原文:http://www.cnblogs.com/donqiang/articles/2057972.html Liunx下修改MySQL字符集:1.查找MySQL的cnf文件的位置find / - ...