给出一个n,k,再给出的n个数中,输出所有的可能使几个数的和等于k
Sample Input
4 6 4 3 2 2 1 1
5 3 2 1 1
400 12 50 50 50 50 50 50 25 25 25 25 25 25
0 0
Sample Output
Sums of 4:
4
3+1
2+2
2+1+1
Sums of 5:
NONE
Sums of 400:
50+50+50+50+50+50+25+25+25+25
50+50+50+50+50+25+25+25+25+25+25
明显的DFS,这个dfs方程让我纠结啊,递归的我头都大了,但是看下答案稍微来点灵感了,在这里dfs函数方程要有哪些参数?
首先要从当前数往后开始dfs,所以要有个参数是当前搜索的数组下标
其次,要判断和=t,所以还要有个保存当前的和的参数,在这里我用t减去当前和,所以当此参数等于0那么就是找到满足条件
最后要输出此序列,所以还要有个参数来标记当前要找的数在数组里的位置
找到三个参数后就好办多了,看代码吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|