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

作者在 2013-06-22 21:53:30 发布以下内容

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


#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;

}


数据结构及算法 | 阅读 2360 次
文章评论,共0条
游客请输入验证码
浏览239375次
最新评论