网站 建设开发合作协议常州哪有做网站
网站 建设开发合作协议,常州哪有做网站,怎么创建游戏平台,wordpress首页打开很慢取 ABCD 从 ABCD 中#xff0c;取出五个字母#xff0c;可以重复#xff0c;但是需要满足 A 为偶数次#xff08;0 也是偶数#xff09;#xff0c;输出排列组合的个数。该程序计算长度为 5 的组合数#xff0c;每个位置可以是 A(1)、B(2)、C(3)或 D(4)#xff0c;统计…取ABCD从ABCD中取出五个字母可以重复但是需要满足A为偶数次0也是偶数输出排列组合的个数。该程序计算长度为5的组合数每个位置可以是A(1)、B(2)、C(3)或D(4)统计其中A出现次数为偶数的组合数量。def count_combinations(): total 0 # 统计符合条件的排列总数 def backtrack(index, count_a): nonlocal total # 终止条件选够5个字母index从1到5共5个位置 if index 6: # 检查A的次数是否为偶数 if count_a % 2 0: total 1 return # 遍历4个选择1A2B3C4D for num in range(1, 5): # 如果选的是A次数1 new_count count_a 1 if num 1 else count_a backtrack(index 1, new_count) backtrack(1, 0) # 从第1个位置开始初始A的次数为0 print(total)排列字符串去重输入一个字符串输出它所有种排列的可能。输入样例AAB输出样例AABABABAAdef string_permutations(): # 1. 获取用户输入的字符串并去除首尾的空格避免输入时不小心加了空格影响结果 s input().strip() # 2. 获取字符串的长度比如输入AABn3 n len(s) # 3. 创建一个和字符串长度相同的布尔列表标记字符是否被选中初始全为False即都未选中 visited [False] * n # 4. 初始化一个空列表用来存储所有生成的排列包括重复的 permutations [] # 5. 定义回溯函数递归生成所有排列 # index当前正在构建的排列的位置比如index0是第一个字符index2是第三个字符 # current当前已经构建好的排列字符串比如A、AA、AAB def backtrack(index, current): # 6. 终止条件如果当前位置等于字符串长度说明排列已构建完成 if index n: # 7. 将完整的排列添加到结果列表中 permutations.append(current) # 8. 结束当前递归回到上一层继续尝试其他字符 return # 9. 遍历所有字符尝试将每个未被选中的字符加入当前排列 for i in range(n): # 10. 检查第i个字符是否未被选中避免重复选同一个字符 if not visited[i]: # 11. 标记第i个字符为已选中防止后续重复使用 visited[i] True # 12. 递归调用位置1当前排列拼接第i个字符比如currentAs[i]B则变成AB backtrack(index 1, current s[i]) # 13. 回溯撤销选择将第i个字符标记为未选中供下一轮循环使用 visited[i] False # 14. 调用回溯函数初始状态位置0当前排列为空字符串 backtrack(0, ) # 15. 去重排序 # - set(permutations)将列表转集合自动去除重复的排列集合的元素唯一 # - list(...)将集合转回列表 # - sorted(...)对去重后的排列按字母顺序排序比如AAB、ABA、BAA unique_perms sorted(list(set(permutations))) # 16. 遍历去重排序后的排列逐行输出 for perm in unique_perms: print(perm) # 17. 程序入口只有当直接运行该脚本时才执行函数 if __name__ __main__: string_permutations()