Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
85158 sh25_wangtaojie 全排列 Python3 通过 30 MS 3772 KB 2302 2026-03-06 15:18:14

Tests(1/1):


def generate_permutations(s): """ 生成字符串的所有全排列,按字典序排列 Args: s (str): 输入的有序小写字母字符串 Returns: list: 按字典序排列的所有排列结果 """ # 将字符串转换为字符列表以便交换位置 chars = list(s) result = [] def backtrack(start): """回溯函数生成所有排列""" # 如果到达末尾,保存当前排列 if start == len(chars): result.append(''.join(chars)) return # 遍历剩余位置,依次作为当前位置的字符 for i in range(start, len(chars)): # 交换位置 chars[start], chars[i] = chars[i], chars[start] # 递归处理下一位置 backtrack(start + 1) # 回溯恢复状态 chars[start], chars[i] = chars[i], chars[start] # 开始回溯生成排列 backtrack(0) # 按字典序排序 result.sort() return result def main(): """ 主函数:读取输入并输出所有排列 """ try: # 读取输入字符串 input_string = input().strip() # 验证输入合法性 if not input_string: print("输入不能为空") return if len(input_string) > 6: print("字符串长度超出限制(最大6个字符)") return # 检查是否都是小写字母 if not all(c.islower() and c.isalpha() for c in input_string): print("输入必须全部为小写字母") return # 检查是否有重复字符 if len(set(input_string)) != len(input_string): print("输入字符串不能包含重复字符") return # 生成并输出所有排列 permutations = generate_permutations(input_string) for perm in permutations: print(perm) except KeyboardInterrupt: print("\n程序被中断") except Exception as e: print(f"发生错误: {e}") # 程序入口 if __name__ == "__main__": main()


测评信息: