python-字符排列问题

题目描述

有 n 个字母,列出由该字母组成的字符串的全排列(相同的排列只计一次)。
输入格式

第一行输入是字母个数 n 。

接下来一行输入的是待排列的 n 个字母。
输出格式

计算出的 n 个字母的所有不同排列总数。
样例输入输出
样例输入

4

aacc
样例输出

6
数据范围

对于 100% 的数据,保证 1≤n≤201≤n≤20 。

来源/分类(难度系数:二星
搜索 排列

完整代码展示:

import math

a=int(input())

b=list(input())

c=[]

for i in range(0,len(b)):

if b[i] not in c:

c.append(b[i])

sum=1

for i in range(0,len(c)):

d=b.count(c[i])

sum*=math.factorial(d)

print(int(math.factorial(len(b))/sum))

python 复制代码
import math
a=int(input())
b=list(input())
c=[]
for i in range(0,len(b)):
    if b[i] not in c:
        c.append(b[i])
sum=1
for i in range(0,len(c)):
    d=b.count(c[i])
    sum*=math.factorial(d)
print(int(math.factorial(len(b))/sum))

代码解释:

"import math ",导入math库。

"a=int(input()) ",导入用户的字符个数a。

"b=list(input()) ",导入用户的字符串,并将该字符串分解为单字符储存在列表b中。

"c=[]

for i in range(0,len(b)):

if b[i] not in c:

c.append(b[i]) ",建立一个空列表c,接着遍历b中元素,判断b[i]是否在c中,如果不在:则将b[i]添加进c中。

"sum=1

for i in range(0,len(c)):

d=b.count(c[i])

sum*=math.factorial(d) ",令sum为1,利用factorial()函数计算b中每种元素的数量的阶乘。接着令sum乘以该阶乘。

"print(int(math.factorial(len(b))/sum)) ",打印列表b长度的阶乘除以sum,并将结果转换为整数型。

数学背景:

排列组合的数学原理主要基于两个基本计数原理:加法原理和乘法原理。这些原理是理解和计算排列组合问题的基础。

加法原理:当完成某件事情存在多种互不重叠的方法时,将每种方法的结果相加即得到总的方法数。例如,从A地到B地,可以选择火车、汽车或飞机,每种交通方式各有不同的方法数,因此总的方法数是这几种交通方式方法数的和。

乘法原理:当完成某件事情需要多个步骤,每个步骤又有多种方法时,将每个步骤的方法数相乘即得到总的方法数。例如,从A地到B地,如果需要先从A地到C地,再从C地到B地,那么从A地到B地的方法数是这两个步骤方法数的乘积。

排列(permutation)和组合(combination)是两种基本的排列组合类型,它们在数学和日常生活中都有广泛的应用。

排列:从n个不同元素中取出m个元素(m≤n),按照一定的顺序排成一列,称为从n个元素中取出m个元素的排列。排列种数记作 P(n,m)P(n, m)P(n,m) 。例如,从1到5这五个数字中取出3个数字,按照从小到大的顺序排列,共有6种排列方式。

组合:从n个不同元素中取出m个元素(m≤n),不考虑元素的顺序,称为从n个元素中取出m个元素的组合。组合种数记作 C(n,m)C(n, m)C(n,m) 。例如,从1到5这五个数字中取出3个数字,不考虑顺序,共有10种组合方式。

计算公式:

运行效果展示:

(声明:以上内容均为原创)

相关推荐
2401_8948281216 分钟前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
B站计算机毕业设计超人16 分钟前
计算机毕业设计Python知识图谱中华古诗词可视化 古诗词情感分析 古诗词智能问答系统 AI大模型自动写诗 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·人工智能·hadoop·python·机器学习·知识图谱·课程设计
玄同76516 分钟前
Python「焚诀」:吞噬所有语法糖的终极修炼手册
开发语言·数据库·人工智能·python·postgresql·自然语言处理·nlp
johnny23317 分钟前
Python管理工具:包、版本、环境
python
羽翼.玫瑰18 分钟前
关于重装Python失败(本质是未彻底卸载Python)的问题解决方案综述
开发语言·python
cdut_suye18 分钟前
解锁函数的魔力:Python 中的多值传递、灵活参数与无名之美
java·数据库·c++·人工智能·python·机器学习·热榜
Remember_99328 分钟前
【LeetCode精选算法】前缀和专题二
算法·哈希算法·散列表
源代码•宸32 分钟前
Leetcode—509. 斐波那契数【简单】
经验分享·算法·leetcode·面试·golang·记忆化搜索·动规
木头左40 分钟前
指数期权备兑策略量化实现
python
小镇学者1 小时前
【python】python项目是如何部署到服务器上的
服务器·python·github