当前位置: 首页 > news >正文

OD 算法题 B卷【全排列】

文章目录

  • 全排列

全排列

  • 给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不同的排列数;
  • 如ABA,则不同的排列有ABA、AAB、BAA三种;
  • 时间限制5s,内存限制100M

输入描述:
输入一个长度不超过10的字符串S,字母都为大写;
输出描述:
输出S重新排列的所有不同的排列数(含自身)

示例1
输入:
ABA
输出:
3

示例2
输入:
ABCDEFGHHA
输出:
907200

python实现:

  • 计算全排列数,依次除以每个重复字符个数的阶乘;

def calc_factorial(n):""" 计算n的阶乘 """if n in [1, 0]:return 1return n * calc_factorial(n-1)s_str = input().strip()
n = len(s_str)
# 计算A_n_1 * .....  n的阶乘
total_num = calc_factorial(n)# 统计每个字符的个数
char_count = {}
for c in s_str:if c in char_count:char_count[c] += 1else:char_count[c] = 1# 总的全排列数 除以 (每个)重复字符个数的阶乘
for v in char_count.values():if v > 1:total_num /= calc_factorial(v)print(int(total_num))

相关文章:

  • Supersonic 新一代AI数据分析平台
  • JS有哪些迭代器,该如何使用?
  • 【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
  • vue中的派发事件与广播事件,及广播事件应用于哪些场景和一个表单验证例子
  • 5.4.2 Spring Boot整合Redis
  • oracle 11g ADG备库报错ORA-00449 lgwr unexpectedly分析处理
  • C++刷题:日期模拟(1)
  • react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架
  • 【Docker 01】Docker 简介
  • 数学:花括号在数学中的应用详解
  • Strong Baseline: Multi-UAV Tracking via YOLOv12 with BoT-SORT-ReID 2025最新无人机跟踪
  • Scrapy爬虫教程(新手)
  • 论文阅读:Matting by Generation
  • jenkins gerrit-trigger插件配置
  • [yolov11改进系列]基于yolov11融合改进检测头AFPN4的python源码+训练源码
  • |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面
  • 第10篇《数据库中间件集成监控与全链路观测系统设计》
  • CAN转PROFINET网关设备基本功能介绍
  • uniapp 对接腾讯云IM群组成员管理(增删改查)
  • Ajax Systems公司的核心产品有哪些?
  • 做查询网站费用/百度指数平台
  • 百度网站名称和网址/一份完整的市场调查方案
  • 无锡制作网站公司/同城推广引流平台
  • 彩票娱乐网站建设开发/太原竞价托管公司推荐
  • 夫妻做网站/sem是什么方法
  • html5做图书馆网站/互联网营销专业