用C c++ 编程 知道一组数 找出这组数中和等于一个给定值的其中几个数

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:02:08
你说的以前学过 不过现在都忘了
还是很感谢你的分析
给一个程序吧
然后分就给你了~~~呵呵

时间不多不能给一个完全的程序
大概提供一个思路,如果对递归调用或二叉树遍历熟悉的话,相信实现这个方法是小菜一碟

首先分析问题,有N个数的加和,有多少种情况?
2的N次方个。
所以,对每个数是否加入和中的所有情况就是一个完全二叉树。
所以你要做的就是
建立一个数组a[N]
建立一个递归函数,参数是下一个位置nNext 和 是否加入下一个位置的数bAdd 和 当前数的加和nSum
递归函数的停止情况是位置到达N,这时候检测当前数的加和是否满足要求

#include "stdafx.h"
#include "stdio.h"
int iNumber[11]={0,1,2,3,4,5,6,7,8,9,10};
int nKey=52;

void ShowState(bool bState[11])
{
for (int i=1;i<11;i++)
if(bState[i])
printf("%d + ",iNumber[i]);
printf ("= %d\n",nKey);
}

void Func(int nPos,bool bAdd,int nSum,bool bState[11])
{

if(bAdd)
{
nSum+=iNumber[nPos];
bState[nPos]=true;
}
else
{
bState[nPos]=false;
}

if(nPos==11)
{
if(nSum==nKey)
ShowState(bState);

return ;
}
Func(nPos+1,true,nSum,bState);
Fun