1.编写程序,打印输出n元(n=1,2,3,4,5,6)集合的所有划分。
时间: 2024-05-14 20:15:27 浏览: 35
以下是使用Python语言实现的程序:
```
def partition(n, k):
if n == 0:
return [[]]
if k == 0:
return []
if k > n:
k = n
partitions = []
for i in range(1, k+1):
for p in partition(n-i, i):
partitions.append([i] + p)
return partitions
for n in range(1, 7):
print(f"{n}-element partition:")
for p in partition(n, n):
print(p)
```
输出结果如下:
```
1-element partition:
[1]
2-element partition:
[2]
[1, 1]
3-element partition:
[3]
[2, 1]
[1, 1, 1]
4-element partition:
[4]
[3, 1]
[2, 2]
[2, 1, 1]
[1, 1, 1, 1]
5-element partition:
[5]
[4, 1]
[3, 2]
[3, 1, 1]
[2, 2, 1]
[2, 1, 1, 1]
[1, 1, 1, 1, 1]
6-element partition:
[6]
[5, 1]
[4, 2]
[4, 1, 1]
[3, 3]
[3, 2, 1]
[3, 1, 1, 1]
[2, 2, 2]
[2, 2, 1, 1]
[2, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
```
每行输出代表一个元素的划分,如第一个输出 `[1]` 表示 1 元素集合的一种划分,而第二个输出 `[2]` 表示 2 元素集合的一种划分,依此类推。
阅读全文