酷代码 AI
菜单

题目描述 输入 n n 个数字(int范围内),在这 n n 个数字中选取 r ( r < n < 10 ) r(r<n<10) 个数字,输出所有可能的情况,要求按数字升序排列输出。 输入格式 第一行两个整数 n n 和 r r ,第二行 n n 个整数,互不相同。 输出格式 按要求输出所有方案,每行一个方案,数字间用一个空格隔开。 样例 输入数据 #1 5 3 3 1 2 4 5 Copy 输出数据 #1 1 2 3 1 2 4 1 2 5 1 3 4 1 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5

以下是使用 Python 实现的代码: ```python # 定义一个函数用于生成组合 def combination(arr, n, r, index, data, i): # 当已经选取了 r 个数字时,输出这组组合 if index == r: for j in range(r): print(data[j], end=" ") print() return # 当遍历完所有数字时,结束递归 if i >= n: return # 选取当前数字 data[index] = arr[i] # 递归选取下一个数字 combination(arr, n, r, index + 1, data, i + 1) # 不选取当前数字,继续递归 combination(arr, n, r, index, data, i + 1) # 读取输入 n, r = map(int, input().split()) arr = list(map(int, input().split())) # 对输入的数字进行排序 arr.sort() # 用于存储当前组合的数组 data = [0] * r # 调用组合生成函数 combination(arr, n, r, 0, data, 0) ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 输入的数字需要先进行排序,否则输出的组合可能不是按升序排列的。 2. 递归终止条件的判断很关键,要确保在选取了 r 个数字时能正确输出组合。 3. 递归调用时,要注意参数的传递,特别是当前选取的数字索引和组合的索引。 [2025-10-18 21:37:19 | AI写代码神器 | 363点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多