C语言 关于由结果算出加数所有可能性的程序

由键盘输入一个结果,再输入最多一千个左右的数字,这些数字可以重复使用,但是要使所相加的得数等于由键盘输入的结果,最后输出所有可能的组合
请问对于这个问题有什么思路吗