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 分)相关推荐

  1. 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)

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

  2. 【模板】 全排列 有重复元素的全排列

    全排列 #include<bits/stdc++.h> using namespace std; int pl[1001]; void print (int n){for(int i=1; ...

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

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

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

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

  5. PTA6、输出10个不重复的英文字母 (10 分)

    6.输出10个不重复的英文字母 (10 分) 随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来. 如没有10个英文字母,显示信息"not found" ...

  6. 7-2 重复数据问题-hebust (10 分)

    7-2 重复数据问题-hebust (10 分) 在一大堆数据中找出重复的是一件经常要做的事情.现在要处理许多整数,在这些整数中,可能存在重复的数据. 你要写一个程序来做这件事情,读入数据,检查是否有 ...

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

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

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

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

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

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

最新文章

  1. Python-time
  2. Spring MVC + Hibernate JPA + Bootstrap 搭建的博客系统
  3. linux下编译动态和静态链接库
  4. Java黑皮书课后题第7章:*7.33(文化:中国生肖)使用一个字符串数组存储动物名称来简化程序清单3-9的程序
  5. Dubbo的设计理念原来就藏在这三张图中
  6. loadrunner java 环境_java应用程序及服务器优化过程及loadrunner测试效果
  7. 软件设计师18-系统开发和运行01
  8. 单层的神经网络使用自定义的损失函数
  9. 数据库系统概论(第5版)学习笔记第1章 1.1——数据库系统概论
  10. DLNA的使用-天翼高清电视机顶盒镜像投屏
  11. Cpu调优 mpstat 命令
  12. ignite 集成oracle,Ignite 配置更新Oracle JDBC Drive
  13. 第二讲:高性能计算关键技术和趋势分析
  14. 小米电视相册在哪 android,小米电视官方详解“共享相册”功能
  15. innodb_buffer_pool_reads、innodb_buffer_pool_read_requests分析与innodb 缓存命中率计算
  16. Qt编写安防视频监控系统67-跨平台及国产系统
  17. c语言赛车编程,基于C语言赛车游戏要点.doc
  18. 【Http】HTTP方法的安全性和幂等性
  19. Android Systrace 基础知识(10) - Binder 和锁竞争解读
  20. CNN网络模型大总结【持续更新中...】

热门文章

  1. [转]格式塔心理学5项法则的学习与思考
  2. 20155307刘浩《网络对抗》逆向及Bof基础
  3. 2020年节假日和周六日统计
  4. 关于offsetLeft
  5. 大厂面试八股文——数据库redis
  6. Exam - Linux程序设计
  7. 黄聪:wordpress调用函数大全
  8. arm64平台编译libtorch
  9. Android的java基本知识总结【入门篇】
  10. 【每日一题/数学模拟题/进位算术】1073. 负二进制数相加