(from http://community.csdn.net/expert/topic/3971/3971377.xml?temp=.7857324)
1.从已知数组d的前n个元素中找出部分元素序列之和等于total的元素序列,约定数组的元素都是正整数,且都小于等于total。
解答:这个题可以用递归进行穷举。
假设
实现以上方法的函数为 int gettotal(int *a_piarr,int a_in,int m_itotal,int i_iindex)。
其中
函数返回值为能够得到的个数,
const int *const a_piarr为数组的首地址,
const int a_in为从前n个元素中找,
const int m_itotal为需要找的和,
int a_inowtotal 为目前的和,
int a_iindex 为目前的第index个数值,
int *const a_itmparr存放找到的几个数值的index,
int a_itmpcnt存放目前的a_itmparr中存放的元素个数。
int gettotal(const int* const a_piarr,const int a_in,const int a_itotal,int a_inowtotal,int a_iindex,int * const a_itmparr,int a_itmpcnt)
{
static int iret = 0;
int i;
if(a_iindex >= a_in || a_inowtotal > a_itotal)
{
return iret;
}