7-1 有重复元素的全排列 (10 分)
7-1 有重复元素的全排列 (10 分)
计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素)
输入格式:
第一行输入数字的数量n(n>2),第二行给出每一个数字。
输出格式:
一个数字,不同排列方式的数量。
样例
输入样例:
3
1 2 2
输出样例:
3
思路
类似于排列组合。如果所有数字都不一样,则为n的阶乘(n!);如果有相同的数字,则为Cnm,再乘以剩下的阶乘。
解答
#include <iostream>
#include<map>
#include<string>
using namespace std;
int A(int n){if (n==0)return 1;int re=1;for(int i=1;i<=n;i++){re*=i;}return re;
}
int C(int m,int n){int re=1;if((m-n)<n)return C(m,m-n);else{for(int i=m;i>(m-n);i--)re*=i;re=re/A(n);return re;}}
int main()
{int n;cin>>n;map<string,int> m;for(int i=0;i<n;i++){string s;cin>>s;m[s]++;}int re=1;map<string,int>::iterator it;for(it=m.begin();it!=m.end();it++){if(it->second>1){re*=C(n,it->second);n-=it->second;}}re*=A(n);cout<<re<<endl;return 0;
}
7-1 有重复元素的全排列 (10 分)相关推荐
- 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
一:题目 计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素) 输入格式: 第一行输入数字的数量n(n>2),第二行给出每一个数字. 输出格式: 一个数字,不同排列方式的数量. 输 ...
- 【模板】 全排列 有重复元素的全排列
全排列 #include<bits/stdc++.h> using namespace std; int pl[1001]; void print (int n){for(int i=1; ...
- 九章算法面试题54 带重复元素的全排列
九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...
- 算法学习——求有重复元素的全排列(递归)
算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...
- PTA6、输出10个不重复的英文字母 (10 分)
6.输出10个不重复的英文字母 (10 分) 随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来. 如没有10个英文字母,显示信息"not found" ...
- 7-2 重复数据问题-hebust (10 分)
7-2 重复数据问题-hebust (10 分) 在一大堆数据中找出重复的是一件经常要做的事情.现在要处理许多整数,在这些整数中,可能存在重复的数据. 你要写一个程序来做这件事情,读入数据,检查是否有 ...
- 减治求有重复元素的全排列
求n个元素的全排列的所有解可以用减治法:每次拎出一个数做前缀,对剩下的元素再求全排列,直至只剩一个元素.代码源自<算法分析与设计(王晓东)>,复杂度O(n!) 1 //输出k~m的所有全排 ...
- “九韶杯”河科院 D.数列重组(含重复元素的全排列+构造方法)
对于含有重复元素序列的全排列,为了再次排列后得到的序列中各不重复,需要用到c++中的do{}while(next_permutation(a,a+n))函数 对于判断每次排序后的序列是否符合条件,用到 ...
- 全排列:不含重复元素和含重复元素的全排列
1.不含重复元素 算法思路: 1.n个元素全排列 = (n-1)个元素的全排列+(另一个元素作为前缀) 2.出口:如果只有一个元素的全排列,则说明已经排完,输出数组: 3.不断将每个元素放在第一个元素 ...
最新文章
- Python-time
- Spring MVC + Hibernate JPA + Bootstrap 搭建的博客系统
- linux下编译动态和静态链接库
- Java黑皮书课后题第7章:*7.33(文化:中国生肖)使用一个字符串数组存储动物名称来简化程序清单3-9的程序
- Dubbo的设计理念原来就藏在这三张图中
- loadrunner java 环境_java应用程序及服务器优化过程及loadrunner测试效果
- 软件设计师18-系统开发和运行01
- 单层的神经网络使用自定义的损失函数
- 数据库系统概论(第5版)学习笔记第1章 1.1——数据库系统概论
- DLNA的使用-天翼高清电视机顶盒镜像投屏
- Cpu调优 mpstat 命令
- ignite 集成oracle,Ignite 配置更新Oracle JDBC Drive
- 第二讲:高性能计算关键技术和趋势分析
- 小米电视相册在哪 android,小米电视官方详解“共享相册”功能
- innodb_buffer_pool_reads、innodb_buffer_pool_read_requests分析与innodb 缓存命中率计算
- Qt编写安防视频监控系统67-跨平台及国产系统
- c语言赛车编程,基于C语言赛车游戏要点.doc
- 【Http】HTTP方法的安全性和幂等性
- Android Systrace 基础知识(10) - Binder 和锁竞争解读
- CNN网络模型大总结【持续更新中...】