#HX2492. 加参数剪枝搜索问题题三:整数划分问题Ⅲ

提交2 通过1
通过率50%
时间限制1000ms
内存限制128MiB
    ID: 12791 传统题 1000ms 128MiB 尝试: 2 已通过: 1 难度: 普及 上传者: 标签>C++c++编程题浩轩OJ迁移6级2025年寒假六级班题库

题目描述

题目描述

一个整数n,请列出把整数n划分为若干个正整数的每一种方法,这些正整数必须选自数组a.

数组a中可能有重复元素,每个可以选择一次,例如对n=6,a={1,1,2,2,3,4},n=1+1+2+2是可以的,数组a中有2个1和2个2可供选择;n=2+2+2则不正确,因为数组a中没有3个2.

输入格式

输入共2行;

第1行,2个正整数n,k,k为数组a的元素个数;

第2行,k个用空格隔开的正整数a0,a1,⋯,ak−1,为数组a中的元素;

输出格式

输出为若干行:

每行为用空格隔开的若干个正整数,为一种n划分为若干个正整数的方法,每组数按在a中的下标从小到大输出.

若两种方法中前k−1个数在a中的下标相同,则第k个数的下标更小的在前.

如果两种方法选取的数在a中的下标不全相同,则视为不同的方法. 例如对n=6,a={1,1,2,2,3,4},选取a的0,2,4或0,3,4号元素都会得到n=1+2+3,两者都要在合适的位置分别输出.

输入样例 #1

6 6
1 1 2 2 3 4

输出样例 #1

1 1 2 2
1 1 4
1 2 3
1 2 3
1 2 3
1 2 3
2 4
2 4

输入样例 #2

1 1
1

输出样例 #2

1

输入样例 #3

1000000000 20
1000000000 999999999 999999998 999999997 999999996 999999995 999999994 999999993 999999992 999999991 999999990 999999989 999999988 999999987 999999986 999999985 999999984 999999983 999999982 999999981

输出样例 #3

1000000000

数据范围与约定

1 ≤ n,a_0,a_1,…,a_{k-1} ≤ 10^9,1 ≤ k ≤ 20。