从若干数中任取若干数使之和最接近另一数

数据结构及算法 | 2013-06-22 21:53:30 | 阅读 1688 次 | 评论(0)

开始学习编程时曾经练习过此类题,采用的是蛮力法,虽说找的数较全,但因指数级数据处理相当复杂且相当有限,现用动态规划处理,暂时没考虑标记所取的数。


#include <stdio.h>
#include <math.h>

double v[100];
double total(int i,double j)
{
double l,r,t;
if(i==-1||j==0) return 0;
l=total(i-1,j);r=total(i-1,j-v[i])+v[i];
t=fabs(l-j)<fabs(r-j) ? l:r;

return t;

}
int main()
{
int n,i;
double j;
printf("请输入数组的长度");
scanf("%d",&n);
printf("请输入此数组的每个数大小\n");
for( i=0;i<n;i++)
scanf("%lf",&v[i]);

printf("请输入要求最接近的数\n");
scanf("%lf",&j);
printf("此数组中最接近所要求的数是:%lf\n",total(n,j));
return 0;

}


文章评论,共0条
游客请输入验证码
浏览176866次
最新评论
  • zhouwenyuan:博主可以开发房产APP吗?
  • qunxingw:结合附件,在分表A或B...实验一下宏就理解了
  • qunxingw:这仅是小范围的一种思路,此题是指数级的数据。